GSUB: Glyph Substitution

The 'GSUB' table provides information on glyph-substitution features that are required or appropriate when the font is used to render certain languages and scripts. These can be classified according to TrueType Open Script, Language, and Feature tags.

Requirements

'hani'

Han Ideographic

'kana'

Kana (Hiragana & Katakana)

'hang'

Korean Hangul

'latn'

Latin


Registered language tags include:

'ZHS '

Chinese (PRC)

'ZHT '

Chinese (Taiwan)

'JAN '

Japanese

'KOR '

Korean


Note that the language tags end with a space character (0x20).

'vert'

Vertical glyph variants


Section

Value

Type

Meaning

GSUBHeader

00010000

Fixed32

Version 1.0 of GSUB format

000A

Offset

From start of GSUBHeader to start of ScriptList

0024

Offset

From start of GSUBHeader to start of FeatureList

0032

Offset

From start of GSUBHeader to start of LookupList

ScriptList

0001

Uint16

Script count

xxxxxxxx

Tag

ScriptRecord[0]: Script tag, e.g. 'kana'

0008

Offset

ScriptRecord[0]: from start of ScriptList to start of this Script

Script

000A

Offset

From start of Script to start of default LangSys

0001

Uint16

LangSys count

xxxxxxxx

Tag

LangSysRecord[0]: Language tag, e.g. 'JAN '

000A

Offset

LangSysRecord[0]: from start of Script to start of this LangSys

LangSys

0000

Offset

LookupOrder (reserved, set to NULL)

FFFF

Uint16

RequiredFeature index (none for this LangSys)

0001

Uint16

Feature index count

0000

Uint16

Feature index [0]: index into FeatureList

FeatureList

0001

Uint16

Feature count

76657274

Tag

FeatureRecord[0]: Feature tag (only 'vert' is supported)

0008

Offset

FeatureRecord[0]: from start of FeatureList to start of this Feature

Feature

0000

Offset

FeatureParams (reserved, set to NULL)

0001

Uint16

Lookup index count

0000

Uint16

Lookup index [0]: index into LookupList

LookupList

0001

Uint16

Lookup count

0004

Offset

From start of LookupList to start of this Lookup

Lookup

0001

Uint16

LookupType (1 = Single substitution)

0000

Uint16

LookupFlags

0001

Uint16

Subtable count

0008

Offset

From start of Lookup to start of Substitution subtable

Substitution subtable

0002

Uint16

Format identifier (2 = Specified output glyph indices)

xxxx

Offset

From start of Substitution subtable to start of Coverage table

xxxx

Uint16

Count of glyph Ids

...

GlyphID[n]

(glyph IDs of vertical glyphs, in order corresponding to Coverage table)

Coverage

0001

Uint16

Format identifier

xxxx

Uint16

Count of glyph Ids

...

GlyphID[n]

(glyph IDs of horizontal glyphs, in sorted order)


Recommendations