Assembly Alternatives Table (ASMB
) defines the mechanism for complex justification, including Kashida. The principle is to associate assembly alternative lists to current glyphs. An assembly alternative list will have multiple glyph assemblies, being a glyph list with optional stretchable parts.
The table follows the structure of GSUB
and GPOS
. Listing lookups only.
subtableFormat: UInt16
: Format identifier: format = 1coverage: Offset16 Coverage
: Offset to Coverage table, from beginning of this subtable.category: UInt16
: Category identifier.asmCount: UInt16
: Quantity of entries inglueTransformArray
.asmArray: Array glueCount (Offset16 AsmAltList)
: Array of assembly alternative lists.
subtableFormat: UInt16
: Format identifier: format = 1coverage: Offset16 Coverage
: Offset to Coverage table, from beginning of this subtable.inputCondition: Offset16 FilteringCondition
: Offset to filtering condition at subject glyph. Could benull
for always-accept.backtrackGlyphCount: UInt16
: Number of glyphs in the backtracking sequence.backtrackCoverageOffsets: Array backtrackGlyphCount (Offset16 Coverage)
: Array of offsets to coverage tables in backtracking sequence, in glyph sequence order.backtrackFilters: Array backtrackGlyphCount (Offset16 FilteringCondition)
: Array of offsets to filtering conditions in backtracking sequence, in glyph sequence order. Could be null.lookaheadGlyphCount: UInt16
: Number of glyphs in lookahead sequence.lookaheadCoverageOffsets: Array lookaheadGlyphCount (Offset16 Coverage)
: Array of offsets to coverage tables in lookahead sequence, in glyph sequence order.lookaheadFilters: Array lookaheadGlyphCount (Offset16 FilteringCondition)
: Array of offsets to filtering conditions in lookahead sequence, in glyph sequence order. Could be null.category: UInt16
: Category identifier.asmCount: UInt16
: Quantity of entries inglueTransformArray
.asmArray: Array glueCount (Offset16 AsmAltList)
: Array of assembly alternative lists. May benull
for cancelling glue application.
format: Uint16
: Format identifier. Set to 1.catRangeCount: UInt16
catRanges: Array catRangeCount FilteringCategoryRange
catMin: UInt16
: Min category number. Inclusive.catMax: UInt16
: Max category number. Inclusive.
alternativesCount: UInt16
:Quantity of glue alternativesalternatives: Array alternativesCount GlyphAsmRun
: Array of the alternative run.
glyphCount: UInt16
: Quantity of glyphs in this alternative run.parts: Array glyphCount GlyphAssemblyPart
: Array of glyphs in this alt run.
glyphID: GID
markHolderClass: UInt16
: TODOstretchFactor: UInt8
- When being zero, this glyph should not be stretched.
- When being positive, this glyph should be stretched. Larger value represents more proportion.
stretchElevation: ValueRecord
:- Defines the elevation when repeating this glyph. Useful for cases like Kashida in Nastaliq.
- Mark handling