12.6.26 Flow Object Classes for Mathematical Formulae
The flow object classes for mathematical formulae are math-sequence, unmath, subscript, superscript, script, mark, fence, fraction, radical, math-operator, and grid.

NOTE 106

These flow objects may also be used for linear chemical formulae.
Character flow objects are used for characters in mathematical formulae; there is no special flow object class for this. Characteristics such as font-size: or font-posture: are determined in the usual way by the characteristics of the character flow object.  These characteristics are not automatically changed by the mathematical formulae flow object classes.  However, the math value for the font-posture: characteristic may be used to make different characters within math formulae have different font postures.
12.6.26.1 Math-sequence Flow Object Class
A math-sequence flow object produces a single area.
The flow object has a single principal port used for the content of the area.  The port shall accept flow objects of the following classes: math-sequence, unmath, subscript, superscript, script, mark, fence, fraction, radical, math-operator, grid, character, or alignment-point. The spacing between the flow objects in the contents may be adjusted based on their class and characteristics. The applicable characteristics are:

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.
When one of the mathematical formulae flow object classes has a port that accepts the same classes as a math-sequence flow object, then the spacing between the flow objects is adjusted as if it were in a math-sequence flow object.
12.6.26.2 Unmath Flow Object Class
An unmath flow object is used to get words of natural language within a mathematical formula.  The characters in such words are spaced differently from adjacent characters in a mathematical formula.  The flow object has a single principal port.  The port shall accept any inline flow objects.  These flow objects are positioned in the normal way.
The following characteristics are applicable:

•  writing-mode: is one of the symbols left-to-right, right-to-left, or top-to-bottom.  The direction determined by the writing-mode shall be perpendicular to the placement direction.  The initial value is left-to-right.

•  glyph-alignment-mode: is one of the symbols base, center, top, bottom, or font specifying the alignment mode to be used for glyphs. font means that the nominal alignment mode of the font in the flow object's writing-mode should be used. The initial value is font.

•  font-family-name: is either #f, indicating that any font family is acceptable, or a string giving the font family name property of the desired font resource. The initial value is iso-serif.

NOTE 107

ISO/IEC 10180 defines a mandatory font set for interchange comprising the font families iso-serif, iso-sanserif, and iso-monospace.

This is applicable when the glyph-alignment-mode: is font.

•  font-weight: is either #f, indicating that any font weight is acceptable, or one of the symbols not-applicable, ultra-light, extra-light, light, semi-light, medium, semi-bold, bold, extra-bold, or ultra-bold, giving the weight property of the desired font resource.  The initial value is medium. This is applicable when the glyph-alignment-mode: is font.

•  font-posture: is either #f, indicating that any posture is acceptable, or one of the symbols not-applicable, upright, oblique, back-slanted-oblique, italic, or back-slanted-italic, giving the posture property of the desired font resource.  The initial value is upright. This is applicable when the glyph-alignment-mode: is font.

•  font-structure: is either #f, indicating that any structure is applicable, or one of the symbols not-applicable, solid, or outline.  The initial value is solid. This is applicable when the glyph-alignment-mode: is font.

•  font-proportionate-width: is either #f, indicating that any proportionate width is acceptable, or one of the symbols not-applicable, ultra-condensed, extra-condensed, condensed, semi-condensed, medium, semi-expanded, expanded, extra-expanded, or ultra-expanded.  The initial value is medium. This is applicable when the glyph-alignment-mode: is font.

•  font-name: is either #f, indicating that any font name is acceptable, or a string which is the public identifier for the font name property of the desired font resource. When the value is a string, the values of the font-family-name:, font-weight:, font-posture:, font-structure:, and font-proportionate-width: characteristics are not used in font selection. The initial value is #f. This is applicable when the glyph-alignment-mode: is font.
12.6.26.3 Subscript Flow Object Class
A subscript flow object is allowed in a math-sequence or in a port on a math flow object that accepts the same flow object classes as a math-sequence.  A subscript flow object causes its parent to position the content of the subscript flow object as a subscript on the preceding area.  It has a single principal port.
12.6.26.4 Superscript Flow Object Class
A superscript flow object is allowed in a math-sequence or in a port on a math flow object that accepts the same flow object classes as a math-sequence.  A superscript flow object causes its parent to position the content of the superscript flow object as a superscript on the preceding area.  It has a single principal port.
12.6.26.5 Script Flow Object Class
The script flow object describes a seven-part area. The parts described are:

•  the base area,

•  the pre-superscript area,

•  the pre-subscript area,

•  the mid-superscript area,

•  the mid-subscript area,

•  the post-superscript area,

•  the post-subscript area.
The applicable ports are:

•  the principal port, which is used for the main content of the flow object.

•  pre-sup, which is used for a superscript that shall be placed before the base content in the direction determined by the writing-mode.

•  pre-sub, which is used for a subscript that shall be placed before the base content in the direction determined by the writing-mode.

•  post-sup, which is used for a superscript that shall be placed after the base content in the direction determined by the writing-mode.

•  post-sub, which is used for a subscript that shall be placed after the base content in the direction determined by the writing-mode.

•  mid-sup, which is used for a superscript that shall be placed above the base content.

•  mid-sub, which is used for a subscript that shall be placed below the base content.
Each port shall accept flow objects of the same class as the port of a math-sequence flow object.
The applicable characteristics are:

•  script-pre-align: is a symbol that specifies the alignment of the pre-superscript and pre-subscript areas. Permitted values are:

•  independent specifying that the pre-subscript and pre-superscript areas shall be aligned independently of each other.

•  pile specifying that the trailing edges of the areas shall be aligned.

•  sup-out specifying that the trailing edge of the area associated with the pre-sup port shall be aligned with the leading edge of the area associated with the pre-sub port.

•  sub-out specifying that the trailing edge of the area associated with the pre-sub port shall be aligned with the leading edge of the area associated with the pre-sup port.

The initial value is independent.

•  script-post-align: is a symbol that specifies the alignment of the post-superscript and post-subscript areas. Permitted values are:

•  independent specifying that the post-subscript and post-superscript areas shall be aligned independently of each other.

•  pile specifying that the leading edges of the areas shall be aligned.

•  sup-out specifying that the leading edge of the area associated with the post-sup port shall be aligned with the trailing edge of the area associated with the post-sub port.

•  sub-out specifying that the leading edge of the area associated with the post-sub port shall be aligned with the trailing edge of the area associated with the post-sup port.

The initial value is independent.

•  script-mid-sup-align: is a symbol that specifies the alignment of the mid-superscript and base areas. Permitted values are:

•  lead-edge specifying that the leading edges of the areas shall be aligned.

•  trail-edge specifying that the trailing edges of the areas shall be aligned.

•  center specifying that the center points of the areas in the direction determined by the writing-mode shall be aligned.

The initial value is center.

•  script-mid-sub-align: is a symbol that specifies the alignment of the mid-subscript and base areas. Permitted values are:

•  lead-edge specifying that the leading edges of the areas shall be aligned.

•  trail-edge specifying that the trailing edges of the areas shall be aligned.

•  center specifying that the center points of the areas in the direction determined by the writing-mode shall be aligned.

The initial value is center.

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.
12.6.26.6 Mark Flow Object Class
The mark flow object describes a three-part area. The parts described are:

•  the base area,

•  the over-mark area,

•  the under-mark area.
The applicable ports are:

•  the principal port, which is used for the main content of the flow object.

•  over-mark, which is used for the flow objects that shall be placed in the over-mark area.

•  under-mark, which is used for the flow objects that shall be placed in the under-mark area.
If the over-mark or under-mark port contains exactly one flow object of class character, rule, or leader, then that flow object shall be extended to cover the full width of the base area.

NOTE 108

It is implementation- and font-dependent how character flow objects are extended.
Each port shall accept flow objects of the same class as the port of a math-sequence flow object. The applicable characteristics are:

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.
12.6.26.7 Fence Flow Object Class
The fence flow object describes a three-part area. The parts described are:

•  the base area,

•  the open-fence area,

•  the close-fence area.
The fences should be extended according to the height of the base area.

NOTE 109

It is implementation- and font-dependent how this is achieved.
The flow object has the following ports:

•  the principal port, which is used for the main content of the flow object. It shall accept flow objects of the same class as the port of a math-sequence flow object.

•  open, which is used for the open-fence area. It shall accept a single flow object of type character.

•  close, which is used for the close-fence area. It shall accept a single flow object of type character.
The applicable characteristics are:

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.
12.6.26.8 Fraction Flow Object Class
The fraction flow object class describes a three-part area. The parts described are:

•  the numerator area,

•  the fraction-bar area,

•  the denominator area.
The flow object has the following ports:

•  numerator, which is used for the content that shall be placed in the numerator area.

•  denominator, which is used for the content that shall be placed in the denominator area.
Each port shall accept flow objects of the same class as the port of a math-sequence flow object.
The applicable characteristics are:

•  fraction-bar: is an unlabeled sosofo containing a single rule flow object to be used for the fraction-bar.  The initial value is a rule with all applicable inherited characteristics equal to their initial values.

•  numerator-align: is a symbol that specifies the alignment of the numerator area and the fraction-bar area. Permitted values are:

•  lead-edge specifying that the leading edges of the areas shall be aligned.

•  trail-edge specifying that the trailing edges of the areas shall be aligned.

•  center specifying that the center points of the areas in the direction determined by the writing-mode shall be aligned.

The initial value is center.

•  denominator-align: is a symbol that specifies the alignment of the denominator area and the fraction-bar area. Permitted values are:

•  lead-edge specifying that the leading edges of the areas shall be aligned.

•  trail-edge specifying that the trailing edges of the areas shall be aligned.

•  center specifying that the center points of the areas in the direction determined by the writing-mode shall be aligned.

The initial value is center.

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.
12.6.26.9 Radical Flow Object Class
The radical flow object describes a three-part area. The parts described are:

•  the base area,

•  the degree area,

•  the radical-glyph area.
The flow object has the following ports:

•  the principal port, which is used for the main content of the flow object.

•  degree, which is used for the degree of the root of the flow object.
Each port shall accept flow objects of the same class as the port of a math-sequence flow object.
The applicable characteristics are:

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.

•  radical: is an unlabeled sosofo containing a single character flow object to be used for the radical glyph. This characteristic is not inherited.  If not specified, it is defaulted in a system-dependent way.
12.6.26.10 Math-operator Flow Object Class
The math-operator flow object describes a four-part area. The parts described are:

•  the base area,

•  the lower-limit area,

•  the upper-limit area,

•  the operator-symbol area.
The flow object has the following ports:

•  the principal port, which is used for the main content of the flow object.

•  operator, which is used for the operator symbol.

•  lower-limit, which is used for the lower-limit content of the flow object.

•  upper-limit, which is used for the upper-limit content of the flow object.
Each port shall accept flow objects of the same class as the port of a math-sequence flow object.
The applicable characteristics are:

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.

NOTE 110

display indicates that the limits are typically placed before or after the operator-symbol in the line-progression direction. inline indicates that the limits are typically placed after the operator-symbol in the inline-progression direction.
12.6.26.11 Grid Flow Object Class
The grid flow object describes a series of areas arranged in a grid. The column-progression direction for the grid is the escapement direction, and the row-progression direction is the line-progression direction.

NOTE 111

A matrix is handled by enclosing a grid flow object in a fence flow object.
The flow object has a single principal port used for all content. It shall accept flow objects of the class grid-cell.
The applicable characteristics are:

•  grid-position-cell-type: is a symbol specifying how the positioning of cells in the grid is determined as follows:

•  explicit indicating that each grid-cell has an explicit row- and column-number.

•  row-major indicating that the position of each cell is determined by where it occurs in the content of the grid; the cells in one row occur before the cells in subsequent rows.

•  column-major indicating that the position of each cell is determined by where it occurs in the content of the grid; the cells in one column occur before the cells in subsequent columns.

The initial value is row-major.

•  grid-n-columns: is a strictly positive integer that specifies the number of columns in the grid. This characteristic is not inherited and shall be specified if grid-position-cell-type: is row-major or explicit.

•  grid-n-rows: is a strictly positive integer that specifies the number of rows in the grid. This characteristic is not inherited and shall be specified if grid-position-cell-type: is column-major or explicit.

•  grid-column-alignment: is a symbol that specifies the alignment of the areas in the grid in the grid's column-progression direction.  Permitted values are start, center, and end.  The initial value is center.

•  grid-row-alignment: is a symbol that specifies the alignment of the areas in the grid in the grid's row-progression direction.  Permitted values are start, center, and end.  The initial value is center.

•  grid-equidistant-rows?: is a boolean that specifies whether the areas in the grid shall be positioned so that their centers are equidistant in the grid's row-progression direction.  The initial value is #f.

•  grid-equidistant-columns?: is a boolean that specifies whether the areas in the grid shall be positioned so that their centers are equidistant in the grid's column-progression direction. The initial value is #f.

•  math-display-mode: is one of the symbols display or inline specifying the style of formatting. The initial value is display.
12.6.26.12 Grid-cell Flow Object Class
The grid-cell flow object is a container for the content of each cell in a grid.
The flow object has a single principal port used for all content. It shall accept flow objects of the same class as the port of a math-sequence flow object.
The applicable characteristics are:

•  column-number: is a strictly positive integer specifying the column for this cell. This characteristic is not inherited. This characteristic shall be specified if and only if it occurs in a grid with a grid-position-cell-type: of explicit. The value shall not exceed the value specified for the grid-n-columns: characteristic of the grid in which it occurs. The number of the first column is 1.

•  row-number: is a strictly positive integer specifying the row for this cell. This characteristic is not inherited. This characteristic shall be specified if and only if it occurs in a grid with a grid-position-cell-type: of explicit. The value shall not exceed the value specified for the grid-n-rows: characteristic of the grid in which it occurs. The number of the first row is 1.
In any grid, there shall not be two or more grid cells that have both the same column-number: and the same row-number: characteristic.