From majordom@falch.no Wed Oct 11 01:13:52 1995 Return-Path: Received: from Norway.EU.net (nic.eunet.no) by utafll.uta.edu (4.1/25-eef) id AA27309; Wed, 11 Oct 95 01:13:43 CDT Received: from falch.no (falch.falch.no) by Norway.EU.net with SMTP id AA23427 (5.65c/IDA-1.4.4/EUnet/NO for ); Wed, 11 Oct 1995 05:10:06 +0100 Received: by falch.no (4.1/1.0) id AA17085; Wed, 11 Oct 95 05:09:54 +0100 Received: from novell.com (sjf-ums.sjf.novell.com) by falch.no (4.1/1.0) id AA17077; Wed, 11 Oct 95 05:09:30 +0100 Received: by sjf-ums; Tue Oct 10 21:27 PDT 1995 Received: by aristotle.sjf.novell.com.sjf.novell.com (5.0/SMI-SVR4) id AA04675; Tue, 10 Oct 1995 21:08:25 -0700 Date: Tue, 10 Oct 1995 21:08:25 -0700 From: jb@aristotle.sjf.novell.com Content-Type: text/plain Message-Id: <9510110408.AA04675@aristotle.sjf.novell.com.sjf.novell.com> To: dsssl-lite@falch.no Subject: DSSSL flow object synopses (part 1 of 2) Content-Length: 29251 Sender: owner-dsssl-lite@falch.no Precedence: bulk Status: R [This message is being sent in parts because of limitations in the mail list software.] Feature and flow object class synopses from the draft DSSSL spec organized along the lines of the proposed categorization of 951010 ####################################### Required features of the style Language ####################################### ------------------------------------------- Features required for the common DSSSL core ------------------------------------------- The table feature allows use of the flow object classes for tables. The table-auto-width feature allows the widths of table columns to be computed automatically. ----------------------------- Features required for dsssl-o ----------------------------- The online feature allows use of the facilities needed to support flow object classes for online display. The simple-page feature allows use of the facilities for simple page layout. ----------------------------- Features required for dsssl-p ----------------------------- The page feature allows use of the page-sequence and column-set-sequence flow object classes and related features. The multi-column feature allows use of column-sets containing more than one column. This implies the page feature. The nested-column-set feature allows use of a column-set-sequence flow object with a column-set-sequence flow object ancestor. This implies the multi-column and page features. The combine-char feature allows character-combination-declarations. The general-indirect feature allows use of the general-indirect-sosofo procedure. ------------------------------------------------ Features required for complex typography options ------------------------------------------------ The font-info feature allows use of the facilities described in "Font Information" [in the DSSSL spec]. The included-container feature allows use the included-container flow object class. The actual-characteristic feature allows use of the actual-c procedures for each inherited characteristic c. --------------------------------- Features required for bidi option --------------------------------- The bidi feature allows use of a right-to-left writing mode and the embedded-text flow object class. -------------------------------------------- Features required for Asian language options -------------------------------------------- The vertical feature allows use of the top-to-bottom writing mode. The inline-note feature allows use of the inline-note flow object class. The glyph-annotation feature allows use of the glyph-annotation flow object class. The emphasizing-mark feature allows use of the emphasizing-mark flow object class. ----------------------------------------- Features required for mathematics options ----------------------------------------- The math feature allows use of the flow object classes for mathematical formulae. ------------------------------------------ Features required for complex SGML options ------------------------------------------ The query feature allows use of query procedures described in "Standard Document Query Language" [in the DSSSL spec]. The keyword feature allows #!key in formal-argument-lists. ###################################################################### Synopses of Categorized DSSSL Flow Object Classes: Common DSSSL Core ###################################################################### Features: table, table-auto-width ====================================================================== Basic common set ====================================================================== ----------------------------------- Sequence flow object class [14.6.1] ----------------------------------- A sequence flow object class is formatted to produce the concatenation of the areas produced by each of its children. It has a single principal port. Its children may be inlined or displayed. NOTE: A sequence flow object is useful for specifying inherited characteristics. For example, a sequence flow object with a specification of a font-posture: characteristic might be constructed for an emphasized phrase element in a paragraph. A port of a flow object will accept a sequence flow object if and only if it would accept each of the flow objects in that sequence. ------------------------------------ Paragraph flow object class [14.6.6] ------------------------------------ A paragraph flow object represents a paragraph. It has a single principal port. The contents of this port can be either inlined or displayed. Inline flow objects are formatted to produce line areas. Displayed flow objects cause a break, and their areas are added to the resulting sequence of areas. A paragraph flow object can only be displayed. Characteristics: lines, asis-truncate-char, asis-wrap-char, asis-wrap-indent, first-line-align, alignment-point-offset, ignore-record-end?, expand-tabs?, line-spacing, line-spacing-priority, min-pre-line-spacing, min-post-line-spacing, min-leading, first-line-start-indent, last-line-end-indent, hyphenation-char, hyphenation-method, hyphenation-ladder-count, hyphenation-remain-char-count, hyphenation-push-char-count, hyphenation-keep, hyphenation-exceptions, line-breaking-method, line-composition-method, implicit-bidi-method, glyph-alignment-mode, font-family-name, font-weight, font-posture, font-structure, font-proportionate-width, font-name, numbered-lines?, line-number, line-number-side, line-number-sep, quadding, last-line-quadding, last-line-justify-limit, justify-glyph-space-max-add, justify-glyph-space-max-remove, hanging-punct?, widow-count, orphan-count, language, country, position-preference, writing-mode, start-indent, end-indent, span, span-weak?, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? ------------------------------------------ Paragraph break flow object class [14.6.7] ------------------------------------------ In conjunction with the paragraph-break flow object class, a paragraph flow object can be used to represent a sequence of paragraphs. The paragraphs are separated by paragraph-break flow objects, which are atomic. Paragraph-break flow objects are allowed only in paragraph flow objects. All the characteristics that are applicable to a paragraph flow object are also applicable to a paragraph-break flow object. The characteristics of a paragraph-break flow object determine how to the portion of the content of the paragraph flow object following that paragraph-break flow object up to the next paragraph-break flow object, if any, is formatted. NOTE: The paragraph-break flow object will inherit from its containing paragraph flow object in the usual way. The first-line-start-indent: is applicable to the line following a paragraph-break flow object, and the last-line-end-indent: is applicable to the line preceding a paragraph-break flow object. NOTE: It is recommended that paragraph-break flow objects are used only if there is no other way of specifying the desired formatting. Characteristics: See Paragraph flow object class. ------------------------------------- Line field flow object class [14.6.8] ------------------------------------- The line-field flow object class is inlined and has inline content. It produces a single inline area whose width is equal to the value of the field-width: characteristic. If the content of line-field area cannot fit in this width, then the area will grow to accommodate the content and, if the line-field occurs in the paragraph, there will be a break after line-field. It has a single principal port. Characteristics: field-width, field-align, writing-mode, inhibit-line-breaks?, break-before-priority, break-after-priority ------------------------------------- Character flow object class [14.6.11] ------------------------------------- A character flow object is atomic. Flow objects of this class can only be inlined. Characteristics: char, char-map, glyph-id, glyph-subst-table, glyph-subst-method, glyph-reorder-method, writing-mode, font-family-name, font-weight, font-posture, math-font-posture, font-structure, font-proportionate-width, font-name, font-size, stretch-factor, hyphenate?, hyphenation-method, kern?, kern-mode, ligature?, allowed-ligatures, space?, inline-space-space, escapement-space-before, escapement-space-after, record-end?, input-tab?, input-white-space-treatment, input-white-space?, punct?, break-before-priority, break-after-priority, drop-after-line-break?, drop-unless-before-line-break?, math-class, script, position-point-shift, language, country, color, layer, inhibit-line-breaks? -------------------------------- Rule flow object class [14.6.14] -------------------------------- A rule is used to specify a straight line. Rules can be inlined or displayed. A rule flow object is atomic. Characteristics: orientation, length, color, layer, line-cap, line-dash, line-thickness, line-repeat, line-sep, position-point-shift, inhibit-line-breaks?, break-before-priority, break-after-priority, position-preference, display-alignment, start-indent, end-indent, writing-mode, span, span-weak?, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? -------------------------------------------- External graphic flow object class [14.6.15] -------------------------------------------- The external-graphic flow object class is used for graphics contained in an external entity. Flow objects of this class may be inlined or displayed. This flow object is atomic. Characteristics: display?, scale, max-width, max-height, entity-system-id, notation-system-id, color, layer, position-preference, display-alignment, start-indent, end-indent, writing-mode, span, span-weak?, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after?, position-point-x, position-point-y, escapement-direction, inhibit-line-breaks?, break-before-priority, break-after-priority ------------------------------- Box flow object class [14.6.18] ------------------------------- The box flow object can be used to put a box around a sequence of flow objects. The box flow object is either displayed or inline depending on the value of the display? characteristic. The box flow object has a single principal port. If the box is displayed, then the port accepts any displayed flow objects. If the box is inline, then the port accepts any inline flow objects. The box flow object may result in more than one area. In this case the border of the box adjacent to the break may be omitted if the box-open-end? characteristic is true. NOTE: If the box is inline, then this border will be perpendicular to the writing-mode. If the box is displayed, then this border will be parallel to the writing-mode. When the box is displayed, the size of the box (that is, the distance between the positions of the borders) in the writing mode direction shall be equal to the display size of the box less the start and end indents. The display size for the content of the box shall be equal to the size of the box. NOTE: Thus the start-indent: and end-indent: characteristics for the content of the box must be set to give the desired separation between the border of the box and its content. There is no automatic separation to take account of the thickness of border. Characteristics: display?, box-type, box-open-end?, background-color, background-layer, box-corner-rounded, box-corner-radius, box-border-alignment, box-size-before, box-size-after, color, layer, line-cap, line-dash, line-thickness, line-repeat, line-sep, line-miter-limit, line-join, writing-mode, position-preference, inhibit-line-breaks?, break-before-priority, break-after-priority, start-indent, end-indent, span, span-weak?, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? ====================================================================== Table set ====================================================================== This set requires the table feature. Automatic table width computation (14.6.27.4) additionally requires the table-auto-width feature. ----------------------------------- Table flow object class [14.6.27.1] ----------------------------------- A table flow object has a single principal port. The contents of this port must be either: * all of class table-part, or * all of class table-column, table-row or table-cell If it contains flow objects of class table-column, they must occur before all flow objects of other classes. A table flow object can only be displayed. A table has two directions associated with it, a row-progression direction and a column-progression direction. The row-progression direction is equal to the placement direction of the table flow object. The column-progression direction is given by the value of the writing-mode: characteristic of the table flow object. These are required to be perpendicular. Characteristics: table-width, table-auto-width-method, table-border, before-row-border, after-row-border, before-column-border, after-column-border, table-corner-rounded, table-corner-radius, position-preference, display-alignment, start-indent, end-indent, writing-mode, span, span-weak?, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? ---------------------------------------- Table part flow object class [14.6.27.2] ---------------------------------------- A table-part flow object is allowed only within a table flow object. A table-part flow object has three ports: * the principal port is used for the table body. * header is used for the table header. * footer is used for the table footer. The only flow objects that are allowed in the ports of a table-part flow object are those explicitly specified here to be allowed. Flow objects of class table-column are allowed in the principal port; they must occur before flow objects of any other class. All ports accept flow objects of class table-row and table-cell. The result of formatting a table-part flow object is a sequence of areas. Each area consists of the content of the header port (unless omitted because of the table-part-omit-middle-header?: characteristic), followed by some portion of the content of the principal port, followed by the content of the footer port (unless omitted because of the table-part-omit-middle-footer?: characteristic). Each row in the principal port occurs exactly once and the order of the rows is preserved. The rows in the header and footer ports are replicated for each result area. All table-parts in a table have the same width. Characteristics: table-part-omit-middle-header?, table-part-omit-middle-footer?, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? ------------------------------------------ Table column flow object class [14.6.27.3] ------------------------------------------ A table-column flow object is an atomic flow object that specifies characteristics applicable to table cells that have the same column and span. Characteristics: column-number, n-columns-spanned, width, display-alignment, start-indent, end-indent Associated functions: (table-unit k) Returns a length-spec that specifies k units of proportional measure. This can be used in the value of the width characteristic. The value of a unit of proportional measure for a particular table is chosen so that the total width of the columns is equal to the specified width of the table. NOTE: This allows the width of a column to be specified proportionally. --------------------------------------- Table row flow object class [14.6.27.5] --------------------------------------- A table-row flow object serves to group table cells into rows: all table-cells in a table-row start in the same geometric row. A table-row has a single principal port, which accepts flow objects of class table-cell. A table-row flow object can only occur as the child of a table-part or table flow object. When flow objects of class table-cell occur directly in a table-part or table, then cells are grouped into rows using the starts-row?: and ends-row?: characteristics. ---------------------------------------- Table cell flow object class [14.6.27.6] ---------------------------------------- A table-cell has a single principal port. It accepts any flow object that can be displayed. A table-cell flow object can only occur as the child of a table-row, table-part or table flow object. Characteristics: column-number, n-columns-spanned, n-rows-spanned, cell-before-row-margin, cell-after-row-margin, cell-before-column-margin, cell-after-column-margin, cell-row-alignment, cell-background?, background-color, background-layer, cell-before-row-border, cell-after-row-border, cell-before-column-border, cell-after-column-border, starts-row?, ends-row?, cell-crossed, line-cap, line-dash, line-thickness, line-repeat, line-sep, float-out-sidelines?, float-out-marginalia?, float-out-line-numbers? ------------------------------------------ Table border flow object class [14.6.27.7] ------------------------------------------ A table-border flow object is an atomic flow object used to specify the border of a table cell or of the table as a whole. A table-border flow object is not allowed in the content of any flow object. Characteristics: border-priority, border-alignment, border-present?, border-omit-at-break?, color, layer, line-cap, line-dash, line-thickness, line-repeat, line-sep, line-miter-limit, line-join ###################################################################### Synopses of Categorized DSSSL Flow Object Classes: Dsssl-o (for online browsers and SGML editors) ###################################################################### Dsssl-o consists of the common DSSSL core plus the following: Features: online, simple-page ====================================================================== Online display set ====================================================================== This set requires the online feature. --------------------------------------------- Vertical scroll flow object class [14.6.28.1] --------------------------------------------- A vertical-scroll flow object class is used as the top-level flow object for on-line display that does not divide output into pages. It has a single principal port, which accepts displayed flow objects. The horizontal size of the flow object is determined by the viewing environment. Characteristics: background-color, background-layer, background-tile, left-margin, right-margin ---------------------------------------- Multi-mode flow object class [14.6.28.2] ---------------------------------------- A multi-mode flow object is a flow object with two or more modes of presentation. The flow object can be switched between these modes of presentation in a system-dependent way. NOTE: An implementation might present a menu of the different modes. Alternatively, clicking on the formatted flow object might cycle through the modes. This flow object is inlined or displayed according to its content and mode of presentation. The flow object has one port for each mode. The content of that port specifies the presentation in the corresponding mode. Initially the flow object shall be displayed using the principal mode. NOTE: For example, an icon which when clicked causes a window to be popped up could be represented by a multi-mode flow object with two ports, the first containing an icon flow object, the second a vertical-scroll flow object. In this case the principal-mode-simultaneous?: characteristic would be true. Characteristics: multi-modes, principal-mode-simultaneous? ---------------------------------- Link flow object class [14.6.28.3] ---------------------------------- A link flow object represents a hypertext link that can be interactively traversed typically by clicking on the areas representing the flow object and its content. A link has a single principal port, which can contain both inline and displayed flow objects. Link flow objects can be nested and the innermost link is effective. Characteristics: destination ---------------------------------------- Marginalia flow object class [14.6.28.4] ---------------------------------------- A marginalia flow object class is used to contain flow objects whose resulting areas will be attachment areas for the line in which the marginalia flow object occurs. It has a single principal port which shall contain only inlined flow objects. A marginalia flow object shall have an ancestor flow object that is of class paragraph. The behaviour when there is more than one marginalia area attached to a single line is system dependent. Characteristics: marginalia-sep, marginalia-side, marginalia-keep-with-previous? ====================================================================== Simple page set ====================================================================== This set requires the simple-page feature. ----------------------------------------------- Simple page sequence flow object class [14.6.3] ----------------------------------------------- A simple-page-sequence flow object class is formatted to produce a sequence of page areas. A simple-page-sequence flow object has a single principal port that accepts any displayed flow object. NOTE: The simple-page-sequence flow object is intended for systems that wish to provide a very simple page layout facility. More complex page layouts can be obtained with the page-sequence and column-set-sequence flow object classes. Characteristics: page-width, page-height, left-margin, right-margin, top-margin, bottom-margin, header-margin, footer-margin, left-header, center-header, right-header, left-footer, center-footer, right-footer, writing-mode Associated functions: (page-number-sosofo) Returns an indirect-sosofo whose content is a sequence of character flow objects representing the page number of the page on which occurs the first area resulting from the indirect flow object specified by the indirect-sosofo. (current-node-page-number-sosofo) Returns an indirect-sosofo whose content is a sequence of character flow objects representing the page number of the primary flow object of the current node. NOTE: This is intended to handle cross references in conjunction with process-referent. ###################################################################### Synopses of Categorized DSSSL Flow Object Classes: Dsssl-p (for SGML typesetting systems) ###################################################################### Dsssl-p consists of the common DSSSL core plus the following: Features: page, multi-column, nested-column-set, combine-char, general-indirect ====================================================================== Printed page set ====================================================================== This set requires the page, multi-column, and nested-column-set features. ---------------------------------------- Page sequence flow object class [14.6.4] ---------------------------------------- A page-sequence flow object is formatted to produce a sequence of page areas. The structure and positioning of the page areas are controlled by page models. The ports of a page-sequence flow object are also determined by the page models. Characteristics: initial-page-models, repeat-page-models, force-last-page, force-first-page, first-page-type, blank-back-page-model, blank-front-page-model, justify-spread?, page-category Associated functions: (page-model? obj) Returns #t if obj is of type page-model and otherwise returns #f. ---------------------------------------------- Column set sequence flow object class [14.6.5] ---------------------------------------------- A column-set-sequence flow object is formatted to produce a sequence of column-set areas. A column-set area is a display area. A column-set area is produced by formatting an area container. A column-set area contains a set of parallel columns. Column-set areas are usually used to fill page-regions; column-set areas can also be used to fill other column-set areas. The structure and positioning of each column-set area is controlled by the column-set model to which it conforms. A column-set-sequence flow object can only be displayed. A column-set-sequence flow object has a port for each port listed in a column-subset-flow-map for any of its column-set models. Characteristics: column-set-model-map, column-set-model, position-preference, span, span-weak?, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? Associated functions: (column-set-model? obj) Returns #t if obj is of type column-set-model and otherwise returns #f. ====================================================================== Printed typography set ====================================================================== ---------------------------------------- Display group flow object class [14.6.2] ---------------------------------------- A display-group flow object class is formatted to produce the concatenation of the areas produced by each of its children. It has a single principal port. Its children shall all be displayed and it is itself displayed. NOTE: It will therefore cause a line break in a paragraph even if the display-group has no content. Characteristics: coalesce-id, position-preference, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? ---------------------------------- Anchor flow object class [14.6.10] ---------------------------------- An anchor flow object is atomic, and serves only as a flow object to be synchronized. It can be either inlined or displayed. If inlined it produces a single area with zero size in the escapement direction. If displayed it produces a single area with zero size in the placement direction. The resulting area will be kept with the first area resulting from the following flow object unless the anchor-keep-with-previous?: characteristic is true. Characteristics: anchor-keep-with-previous?, display?, span, span-weak?, inhibit-line-breaks?, break-before-priority, break-after-priority ---------------------------------- Leader flow object class [14.6.12] ---------------------------------- A leader flow object can only be inlined. A leader flow object has a single principal port containing the inline flow objects to be repeated. Characteristics: length, truncate-leader?, align-leader?, min-leader-repeat, inhibit-line-breaks?, break-before-priority, break-after-priority --------------------------------- Score flow object class [14.6.17] --------------------------------- The score flow object has a single principal port. The contents of this port is scored. The port can contain only inlined flow objects. NOTE: Kendot scoring is achieved using the emphasizing mark flow object ]class. Characteristics: type, score-spaces?, color, layer, line-cap, line-dash, line-thickness, line-repeat, line-sep, inhibit-line-breaks? ---------------------------------------- Side-by-side flow object class [14.6.19] ---------------------------------------- A side-by-side flow object is always displayed. It has a single port whose contents are side-by-side-item flow objects which are potentially aligned with each other in the placement direction of the side-by-side. NOTE: When two objects are aligned in some direction, then their relative position is adjusted in that direction so that their alignment points lie on a line that is perpendicular to that direction. Characteristics: side-by-side-overlap-control, position-preference, space-before, space-after, keep-with-previous?, keep-with-next?, break-before, break-after, keep, may-violate-keep-before?, may-violate-keep-after? --------------------------------------------- Side-by-side item flow object class [14.6.20] --------------------------------------------- A side-by-side-item flow object is always displayed. It has a single principal port whose contents are displayed. The display size of the content is the same as the display size of the side-by-side. A side-by-side-item flow object is allowed only in a side-by-side flow object. Characteristics: start-indent, end-indent, side-by-side-pre-align