boring-expansion-spec icon indicating copy to clipboard operation
boring-expansion-spec copied to clipboard

[`JSTF`] beyond-64k extension

Open behdad opened this issue 1 year ago • 2 comments

As discussed on the MPEG list.

I propose bumping the minor version:

Type | Name | Description
-- | -- | --
uint16 | majorVersion | Major version of the JSTF table, = 1
uint16 | minorVersion | Minor version of the JSTF table, = 1
uint16 | jstfScriptCount | Number of JstfScriptRecords in this table
JstfScriptRecord | jstfScriptRecords[jstfScriptCount] | Array of JstfScriptRecords, in alphabetical order by jstfScriptTag
uint16 | jstfScriptCount2 | Number of JstfScriptRecords2 in this table
JstfScriptRecord2 | jstfScriptRecords2[jstfScriptCount2] | Array of JstfScriptRecords2, in alphabetical order by jstfScriptTag

With JstfScriptRecord2:

Type | Name | Description
-- | -- | --
Tag | jstfScriptTag | 4-byte JstfScript identification
Offset32 | jstfScript2Offset | Offset to JstfScript2 table, from beginning of JSTF Header

And JstfScript2:

Type | Name | Description
-- | -- | --
Offset32 | extenderGlyph2Offset | Offset to ExtenderGlyph2 table, from beginning of JstfScript2 table (may be NULL)
Offset32 | defJstfLangSysOffset | Offset to default JstfLangSys table, from beginning of JstfScript2 table (may be NULL)
uint16 | jstfLangSysCount | Number of JstfLangSysRecords in this table- may be zero (0)
JstfLangSysRecord | jstfLangSysRecords[jstfLangSysCount] | Array of JstfLangSysRecords, in alphabetical order by JstfLangSysTag

And ExtenderGlyph2:

Type | Name | Description
-- | -- | --
uint24 | glyphCount | Number of extender glyphs in this script
uint24 | extenderGlyphs[glyphCount] | Extender glyph IDs — in increasing numerical order

behdad avatar Jan 26 '24 18:01 behdad

It is good design to make a hybrid font by single JSTF table. The contents in jstfScriptRecord and jstfScriptRecord2 can overlap? Or they shall be exclusive?

mpsuzuki avatar Jan 27 '24 02:01 mpsuzuki

It is good design to make a hybrid font by single JSTF table. The contents in jstfScriptRecord and jstfScriptRecord2 can overlap? Or they shall be exclusive?

The way we did in GSUB/GPOS is that if the system understands jstfScriptRecord2, then the other one is ignored.

behdad avatar Jan 27 '24 02:01 behdad