1d4d151390d1288f8d2df30f6dfa26a309c7334dajvrotData = [
2d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
3d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
40de65295f66c882920988c6fe23485b7a4858575Behdad Esfahbod	# common
5d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
6d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
7d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ScriptList', [
8d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ScriptCount', None, None, 'Number of ScriptRecords'),
9d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'ScriptRecord', 'ScriptCount', 0, 'Array of ScriptRecords -listed alphabetically by ScriptTag'),
10d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
11d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
12d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ScriptRecord', [
13d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'ScriptTag', None, None, '4-byte ScriptTag identifier'),
14d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Script', None, None, 'Offset to Script table-from beginning of ScriptList'),
15d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
16d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
17d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Script', [
18d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'DefaultLangSys', None, None, 'Offset to DefaultLangSys table-from beginning of Script table-may be NULL'),
19d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LangSysCount', None, None, 'Number of LangSysRecords for this script-excluding the DefaultLangSys'),
20d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'LangSysRecord', 'LangSysCount', 0, 'Array of LangSysRecords-listed alphabetically by LangSysTag'),
21d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
22d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
23d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LangSysRecord', [
24d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'LangSysTag', None, None, '4-byte LangSysTag identifier'),
25d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LangSys', None, None, 'Offset to LangSys table-from beginning of Script table'),
26d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
27d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
28d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LangSys', [
29d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LookupOrder', None, None, '= NULL (reserved for an offset to a reordering table)'),
30d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ReqFeatureIndex', None, None, 'Index of a feature required for this language system- if no required features = 0xFFFF'),
31d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'FeatureCount', None, None, 'Number of FeatureIndex values for this language system-excludes the required feature'),
32d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'FeatureIndex', 'FeatureCount', 0, 'Array of indices into the FeatureList-in arbitrary order'),
33d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
34d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
35d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('FeatureList', [
36d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'FeatureCount', None, None, 'Number of FeatureRecords in this table'),
37d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'FeatureRecord', 'FeatureCount', 0, 'Array of FeatureRecords-zero-based (first feature has FeatureIndex = 0)-listed alphabetically by FeatureTag'),
38d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
39d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
40d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('FeatureRecord', [
41d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'FeatureTag', None, None, '4-byte feature identification tag'),
42d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Feature', None, None, 'Offset to Feature table-from beginning of FeatureList'),
43d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
44d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
45d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Feature', [
46d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'FeatureParams', None, None, '= NULL (reserved for offset to FeatureParams)'),
47d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupCount', None, None, 'Number of LookupList indices for this feature'),
48d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupListIndex', 'LookupCount', 0, 'Array of LookupList indices for this feature -zero-based (first lookup is LookupListIndex = 0)'),
49d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
50d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
519e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	('FeatureParams', [
529e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	]),
539e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod
549e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	('FeatureParamsSize', [
553ac9e63fce920ca3cf12f53e067641849c9cdbb4Behdad Esfahbod		('DeciPoints', 'DesignSize', None, None, 'The design size in 720/inch units (decipoints).'),
569e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'SubfamilyID', None, None, 'Serves as an identifier that associates fonts in a subfamily.'),
579e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'SubfamilyNameID', None, None, 'Subfamily NameID.'),
583ac9e63fce920ca3cf12f53e067641849c9cdbb4Behdad Esfahbod		('DeciPoints', 'RangeStart', None, None, 'Small end of recommended usage range (exclusive) in 720/inch units.'),
593ac9e63fce920ca3cf12f53e067641849c9cdbb4Behdad Esfahbod		('DeciPoints', 'RangeEnd', None, None, 'Large end of recommended usage range (inclusive) in 720/inch units.'),
609e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	]),
619e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod
629e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	('FeatureParamsStylisticSet', [
639e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'Version', None, None, 'Set to 0.'),
649e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'UINameID', None, None, 'UI NameID.'),
659e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	]),
669e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod
679e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	('FeatureParamsCharacterVariants', [
689e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'Format', None, None, 'Set to 0.'),
699e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'FeatUILabelNameID', None, None, 'Feature UI label NameID.'),
709e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'FeatUITooltipTextNameID', None, None, 'Feature UI tooltip text NameID.'),
719e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'SampleTextNameID', None, None, 'Sample text NameID.'),
729e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'NumNamedParameters', None, None, 'Number of named parameters.'),
739e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'FirstParamUILabelNameID', None, None, 'First NameID of UI feature parameters.'),
749e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint16', 'CharCount', None, None, 'Count of characters this feature provides glyph variants for.'),
759e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod		('uint24', 'Character', 'CharCount', 0, 'Unicode characters for which this feature provides glyph variants.'),
769e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod	]),
779e1bd2d0b4416acc7fce623a3bae37064d61d15bBehdad Esfahbod
78d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LookupList', [
79d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupCount', None, None, 'Number of lookups in this table'),
80d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Lookup', 'LookupCount', 0, 'Array of offsets to Lookup tables-from beginning of LookupList -zero based (first lookup is Lookup index = 0)'),
81d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
82d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
83d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Lookup', [
84d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupType', None, None, 'Different enumerations for GSUB and GPOS'),
85d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupFlag', None, None, 'Lookup qualifiers'),
86d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubTableCount', None, None, 'Number of SubTables for this lookup'),
87d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'SubTable', 'SubTableCount', 0, 'Array of offsets to SubTables-from beginning of Lookup table'),
88f41056dc764d1300f96354b643a5e5cf7236f09cBehdad Esfahbod		('uint16', 'MarkFilteringSet', None, 'LookupFlag & 0x0010', 'If set, indicates that the lookup table structure is followed by a MarkFilteringSet field. The layout engine skips over all mark glyphs not in the mark filtering set indicated.'),
89d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
90d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
91d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('CoverageFormat1', [
92d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CoverageFormat', None, None, 'Format identifier-format = 1'),
93d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of glyphs in the GlyphArray'),
94d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'GlyphArray', 'GlyphCount', 0, 'Array of GlyphIDs-in numerical order'),
95d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
96d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
97d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('CoverageFormat2', [
98d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CoverageFormat', None, None, 'Format identifier-format = 2'),
99d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'RangeCount', None, None, 'Number of RangeRecords'),
100d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'RangeRecord', 'RangeCount', 0, 'Array of glyph ranges-ordered by Start GlyphID'),
101d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
102d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
103d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('RangeRecord', [
104d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Start', None, None, 'First GlyphID in the range'),
105d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'End', None, None, 'Last GlyphID in the range'),
106d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'StartCoverageIndex', None, None, 'Coverage Index of first GlyphID in range'),
107d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
108d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
109d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ClassDefFormat1', [
110d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ClassFormat', None, None, 'Format identifier-format = 1'),
111d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'StartGlyph', None, None, 'First GlyphID of the ClassValueArray'),
112d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Size of the ClassValueArray'),
113d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ClassValueArray', 'GlyphCount', 0, 'Array of Class Values-one per GlyphID'),
114d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
115d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
116d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ClassDefFormat2', [
117d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ClassFormat', None, None, 'Format identifier-format = 2'),
118d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ClassRangeCount', None, None, 'Number of ClassRangeRecords'),
119d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'ClassRangeRecord', 'ClassRangeCount', 0, 'Array of ClassRangeRecords-ordered by Start GlyphID'),
120d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
121d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
122d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ClassRangeRecord', [
123d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Start', None, None, 'First GlyphID in the range'),
124d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'End', None, None, 'Last GlyphID in the range'),
125d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Class', None, None, 'Applied to all glyphs in the range'),
126d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
127d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
128d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Device', [
129d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'StartSize', None, None, 'Smallest size to correct-in ppem'),
130d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'EndSize', None, None, 'Largest size to correct-in ppem'),
131d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'DeltaFormat', None, None, 'Format of DeltaValue array data: 1, 2, or 3'),
1327d130307e6e6094e40a841a3c41fc74b203b7e8eBehdad Esfahbod		('DeltaValue', 'DeltaValue', '', 0, 'Array of compressed data'),
133d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
134d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
135d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
136d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
1370de65295f66c882920988c6fe23485b7a4858575Behdad Esfahbod	# gpos
138d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
139d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
140d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('GPOS', [
141a221a57ccdeefc752384778444ee737d4559a516Behdad Esfahbod		('Version', 'Version', None, None, 'Version of the GPOS table-initially = 0x00010000'),
142d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ScriptList', None, None, 'Offset to ScriptList table-from beginning of GPOS table'),
143d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'FeatureList', None, None, 'Offset to FeatureList table-from beginning of GPOS table'),
144d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LookupList', None, None, 'Offset to LookupList table-from beginning of GPOS table'),
145d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
146d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
147d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SinglePosFormat1', [
148d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
149d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of SinglePos subtable'),
150d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ValueFormat', None, None, 'Defines the types of data in the ValueRecord'),
151d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('ValueRecord', 'Value', None, None, 'Defines positioning value(s)-applied to all glyphs in the Coverage table'),
152d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
153d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
154d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SinglePosFormat2', [
155d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 2'),
156d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of SinglePos subtable'),
157d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ValueFormat', None, None, 'Defines the types of data in the ValueRecord'),
158d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ValueCount', None, None, 'Number of ValueRecords'),
159d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('ValueRecord', 'Value', 'ValueCount', 0, 'Array of ValueRecords-positioning values applied to glyphs'),
160d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
161d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
162d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PairPosFormat1', [
163d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
164d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of PairPos subtable-only the first glyph in each pair'),
165d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ValueFormat1', None, None, 'Defines the types of data in ValueRecord1-for the first glyph in the pair -may be zero (0)'),
166d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ValueFormat2', None, None, 'Defines the types of data in ValueRecord2-for the second glyph in the pair -may be zero (0)'),
167d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PairSetCount', None, None, 'Number of PairSet tables'),
168d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'PairSet', 'PairSetCount', 0, 'Array of offsets to PairSet tables-from beginning of PairPos subtable-ordered by Coverage Index'),
169d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
170d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
171d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PairSet', [
172d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PairValueCount', None, None, 'Number of PairValueRecords'),
173d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'PairValueRecord', 'PairValueCount', 0, 'Array of PairValueRecords-ordered by GlyphID of the second glyph'),
174d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
175d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
176d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PairValueRecord', [
177d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'SecondGlyph', None, None, 'GlyphID of second glyph in the pair-first glyph is listed in the Coverage table'),
178d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('ValueRecord', 'Value1', None, None, 'Positioning data for the first glyph in the pair'),
179d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('ValueRecord', 'Value2', None, None, 'Positioning data for the second glyph in the pair'),
180d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
181d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
182d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PairPosFormat2', [
183d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 2'),
184d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of PairPos subtable-for the first glyph of the pair'),
185d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ValueFormat1', None, None, 'ValueRecord definition-for the first glyph of the pair-may be zero (0)'),
186d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ValueFormat2', None, None, 'ValueRecord definition-for the second glyph of the pair-may be zero (0)'),
187d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ClassDef1', None, None, 'Offset to ClassDef table-from beginning of PairPos subtable-for the first glyph of the pair'),
188d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ClassDef2', None, None, 'Offset to ClassDef table-from beginning of PairPos subtable-for the second glyph of the pair'),
189d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Class1Count', None, None, 'Number of classes in ClassDef1 table-includes Class0'),
190d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Class2Count', None, None, 'Number of classes in ClassDef2 table-includes Class0'),
191d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'Class1Record', 'Class1Count', 0, 'Array of Class1 records-ordered by Class1'),
192d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
193d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
194d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Class1Record', [
195d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'Class2Record', 'Class2Count', 0, 'Array of Class2 records-ordered by Class2'),
196d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
197d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
198d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Class2Record', [
199d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('ValueRecord', 'Value1', None, None, 'Positioning for first glyph-empty if ValueFormat1 = 0'),
200d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('ValueRecord', 'Value2', None, None, 'Positioning for second glyph-empty if ValueFormat2 = 0'),
201d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
202d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
203d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('CursivePosFormat1', [
204d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
205d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of CursivePos subtable'),
206d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'EntryExitCount', None, None, 'Number of EntryExit records'),
207d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'EntryExitRecord', 'EntryExitCount', 0, 'Array of EntryExit records-in Coverage Index order'),
208d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
209d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
210d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('EntryExitRecord', [
211d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'EntryAnchor', None, None, 'Offset to EntryAnchor table-from beginning of CursivePos subtable-may be NULL'),
212d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ExitAnchor', None, None, 'Offset to ExitAnchor table-from beginning of CursivePos subtable-may be NULL'),
213d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
214d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
215d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('MarkBasePosFormat1', [
216d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
217d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MarkCoverage', None, None, 'Offset to MarkCoverage table-from beginning of MarkBasePos subtable'),
218d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseCoverage', None, None, 'Offset to BaseCoverage table-from beginning of MarkBasePos subtable'),
219d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ClassCount', None, None, 'Number of classes defined for marks'),
220d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MarkArray', None, None, 'Offset to MarkArray table-from beginning of MarkBasePos subtable'),
221d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseArray', None, None, 'Offset to BaseArray table-from beginning of MarkBasePos subtable'),
222d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
223d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
224d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseArray', [
225d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseCount', None, None, 'Number of BaseRecords'),
226d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'BaseRecord', 'BaseCount', 0, 'Array of BaseRecords-in order of BaseCoverage Index'),
227d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
228d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
229d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseRecord', [
230d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseAnchor', 'ClassCount', 0, 'Array of offsets (one per class) to Anchor tables-from beginning of BaseArray table-ordered by class-zero-based'),
231d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
232d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
233d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('MarkLigPosFormat1', [
234d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
235d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MarkCoverage', None, None, 'Offset to Mark Coverage table-from beginning of MarkLigPos subtable'),
236d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LigatureCoverage', None, None, 'Offset to Ligature Coverage table-from beginning of MarkLigPos subtable'),
237d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ClassCount', None, None, 'Number of defined mark classes'),
238d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MarkArray', None, None, 'Offset to MarkArray table-from beginning of MarkLigPos subtable'),
239d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LigatureArray', None, None, 'Offset to LigatureArray table-from beginning of MarkLigPos subtable'),
240d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
241d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
242d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LigatureArray', [
243d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LigatureCount', None, None, 'Number of LigatureAttach table offsets'),
244d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LigatureAttach', 'LigatureCount', 0, 'Array of offsets to LigatureAttach tables-from beginning of LigatureArray table-ordered by LigatureCoverage Index'),
245d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
246d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
247d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LigatureAttach', [
248d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ComponentCount', None, None, 'Number of ComponentRecords in this ligature'),
249d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'ComponentRecord', 'ComponentCount', 0, 'Array of Component records-ordered in writing direction'),
250d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
251d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
252d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ComponentRecord', [
253d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LigatureAnchor', 'ClassCount', 0, 'Array of offsets (one per class) to Anchor tables-from beginning of LigatureAttach table-ordered by class-NULL if a component does not have an attachment for a class-zero-based array'),
254d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
255d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
256d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('MarkMarkPosFormat1', [
257d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
258d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Mark1Coverage', None, None, 'Offset to Combining Mark Coverage table-from beginning of MarkMarkPos subtable'),
259d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Mark2Coverage', None, None, 'Offset to Base Mark Coverage table-from beginning of MarkMarkPos subtable'),
260d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ClassCount', None, None, 'Number of Combining Mark classes defined'),
261d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Mark1Array', None, None, 'Offset to MarkArray table for Mark1-from beginning of MarkMarkPos subtable'),
262d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Mark2Array', None, None, 'Offset to Mark2Array table for Mark2-from beginning of MarkMarkPos subtable'),
263d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
264d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
265d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Mark2Array', [
266d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Mark2Count', None, None, 'Number of Mark2 records'),
267d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'Mark2Record', 'Mark2Count', 0, 'Array of Mark2 records-in Coverage order'),
268d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
269d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
270d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Mark2Record', [
271d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Mark2Anchor', 'ClassCount', 0, 'Array of offsets (one per class) to Anchor tables-from beginning of Mark2Array table-zero-based array'),
272d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
273d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
274d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PosLookupRecord', [
275d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SequenceIndex', None, None, 'Index to input glyph sequence-first glyph = 0'),
276d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupListIndex', None, None, 'Lookup to apply to that position-zero-based'),
277d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
278d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
279d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ContextPosFormat1', [
280d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
281d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of ContextPos subtable'),
282d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosRuleSetCount', None, None, 'Number of PosRuleSet tables'),
283d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'PosRuleSet', 'PosRuleSetCount', 0, 'Array of offsets to PosRuleSet tables-from beginning of ContextPos subtable-ordered by Coverage Index'),
284d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
285d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
286d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PosRuleSet', [
287d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosRuleCount', None, None, 'Number of PosRule tables'),
288d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'PosRule', 'PosRuleCount', 0, 'Array of offsets to PosRule tables-from beginning of PosRuleSet-ordered by preference'),
289d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
290d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
291d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PosRule', [
292d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of glyphs in the Input glyph sequence'),
293d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosCount', None, None, 'Number of PosLookupRecords'),
294d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Input', 'GlyphCount', -1, 'Array of input GlyphIDs-starting with the second glyph'),
295d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'PosLookupRecord', 'PosCount', 0, 'Array of positioning lookups-in design order'),
296d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
297d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
298d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ContextPosFormat2', [
299d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 2'),
300d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of ContextPos subtable'),
301d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ClassDef', None, None, 'Offset to ClassDef table-from beginning of ContextPos subtable'),
302b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'PosClassSetCount', None, None, 'Number of PosClassSet tables'),
303b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'PosClassSet', 'PosClassSetCount', 0, 'Array of offsets to PosClassSet tables-from beginning of ContextPos subtable-ordered by class-may be NULL'),
304d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
305d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
306d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PosClassSet', [
307b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'PosClassRuleCount', None, None, 'Number of PosClassRule tables'),
308b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'PosClassRule', 'PosClassRuleCount', 0, 'Array of offsets to PosClassRule tables-from beginning of PosClassSet-ordered by preference'),
309d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
310d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
311d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('PosClassRule', [
312d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of glyphs to be matched'),
313d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosCount', None, None, 'Number of PosLookupRecords'),
314d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Class', 'GlyphCount', -1, 'Array of classes-beginning with the second class-to be matched to the input glyph sequence'),
315d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'PosLookupRecord', 'PosCount', 0, 'Array of positioning lookups-in design order'),
316d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
317d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
318d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ContextPosFormat3', [
319d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 3'),
320d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of glyphs in the input sequence'),
321d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosCount', None, None, 'Number of PosLookupRecords'),
322d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', 'GlyphCount', 0, 'Array of offsets to Coverage tables-from beginning of ContextPos subtable'),
323d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'PosLookupRecord', 'PosCount', 0, 'Array of positioning lookups-in design order'),
324d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
325d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
326d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainContextPosFormat1', [
327d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 1'),
328d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of ContextPos subtable'),
329d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ChainPosRuleSetCount', None, None, 'Number of ChainPosRuleSet tables'),
330d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ChainPosRuleSet', 'ChainPosRuleSetCount', 0, 'Array of offsets to ChainPosRuleSet tables-from beginning of ContextPos subtable-ordered by Coverage Index'),
331d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
332d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
333d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainPosRuleSet', [
334d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ChainPosRuleCount', None, None, 'Number of ChainPosRule tables'),
335d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ChainPosRule', 'ChainPosRuleCount', 0, 'Array of offsets to ChainPosRule tables-from beginning of ChainPosRuleSet-ordered by preference'),
336d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
337d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
338d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainPosRule', [
339d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BacktrackGlyphCount', None, None, 'Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)'),
340d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Backtrack', 'BacktrackGlyphCount', 0, "Array of backtracking GlyphID's (to be matched before the input sequence)"),
341d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'InputGlyphCount', None, None, 'Total number of glyphs in the input sequence (includes the first glyph)'),
342d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Input', 'InputGlyphCount', -1, 'Array of input GlyphIDs (start with second glyph)'),
343b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'LookAheadGlyphCount', None, None, 'Total number of glyphs in the look ahead sequence (number of glyphs to be matched after the input sequence)'),
344d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'LookAhead', 'LookAheadGlyphCount', 0, "Array of lookahead GlyphID's (to be matched after the input sequence)"),
345d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosCount', None, None, 'Number of PosLookupRecords'),
346d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'PosLookupRecord', 'PosCount', 0, 'Array of PosLookupRecords (in design order)'),
347d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
348d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
349d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainContextPosFormat2', [
350d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 2'),
351d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of ChainContextPos subtable'),
352d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BacktrackClassDef', None, None, 'Offset to ClassDef table containing backtrack sequence context-from beginning of ChainContextPos subtable'),
353d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'InputClassDef', None, None, 'Offset to ClassDef table containing input sequence context-from beginning of ChainContextPos subtable'),
354b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'LookAheadClassDef', None, None, 'Offset to ClassDef table containing lookahead sequence context-from beginning of ChainContextPos subtable'),
355b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'ChainPosClassSetCount', None, None, 'Number of ChainPosClassSet tables'),
356b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'ChainPosClassSet', 'ChainPosClassSetCount', 0, 'Array of offsets to ChainPosClassSet tables-from beginning of ChainContextPos subtable-ordered by input class-may be NULL'),
357d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
358d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
359d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainPosClassSet', [
360b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'ChainPosClassRuleCount', None, None, 'Number of ChainPosClassRule tables'),
361b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'ChainPosClassRule', 'ChainPosClassRuleCount', 0, 'Array of offsets to ChainPosClassRule tables-from beginning of ChainPosClassSet-ordered by preference'),
362d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
363d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
364d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainPosClassRule', [
365d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BacktrackGlyphCount', None, None, 'Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)'),
366d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Backtrack', 'BacktrackGlyphCount', 0, 'Array of backtracking classes(to be matched before the input sequence)'),
367d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'InputGlyphCount', None, None, 'Total number of classes in the input sequence (includes the first class)'),
368d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Input', 'InputGlyphCount', -1, 'Array of input classes(start with second class; to be matched with the input glyph sequence)'),
369b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'LookAheadGlyphCount', None, None, 'Total number of classes in the look ahead sequence (number of classes to be matched after the input sequence)'),
370d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookAhead', 'LookAheadGlyphCount', 0, 'Array of lookahead classes(to be matched after the input sequence)'),
371d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosCount', None, None, 'Number of PosLookupRecords'),
372df1f145e5afee009fe88dfaa9c255363003f5f9fjvr		('struct', 'PosLookupRecord', 'PosCount', 0, 'Array of PosLookupRecords (in design order)'),
373d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
374d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
375d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainContextPosFormat3', [
376d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosFormat', None, None, 'Format identifier-format = 3'),
377d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BacktrackGlyphCount', None, None, 'Number of glyphs in the backtracking sequence'),
378d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BacktrackCoverage', 'BacktrackGlyphCount', 0, 'Array of offsets to coverage tables in backtracking sequence, in glyph sequence order'),
379d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'InputGlyphCount', None, None, 'Number of glyphs in input sequence'),
380d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'InputCoverage', 'InputGlyphCount', 0, 'Array of offsets to coverage tables in input sequence, in glyph sequence order'),
381b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'LookAheadGlyphCount', None, None, 'Number of glyphs in lookahead sequence'),
382b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'LookAheadCoverage', 'LookAheadGlyphCount', 0, 'Array of offsets to coverage tables in lookahead sequence, in glyph sequence order'),
383d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PosCount', None, None, 'Number of PosLookupRecords'),
384d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'PosLookupRecord', 'PosCount', 0, 'Array of PosLookupRecords,in design order'),
385d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
386d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
387d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ExtensionPosFormat1', [
388ea017bd66f790d066a3f4f0b5974479875dd5dfcBehdad Esfahbod		('uint16', 'ExtFormat', None, None, 'Format identifier. Set to 1.'),
389ea017bd66f790d066a3f4f0b5974479875dd5dfcBehdad Esfahbod		('uint16', 'ExtensionLookupType', None, None, 'Lookup type of subtable referenced by ExtensionOffset (i.e. the extension subtable).'),
3909e482332baf75b67058bcd9e2b0ae139fbbebc78Behdad Esfahbod		('LOffset', 'ExtSubTable', None, None, 'Offset to SubTable'),
391d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
392d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
393d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ValueRecord', [
394d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'XPlacement', None, None, 'Horizontal adjustment for placement-in design units'),
395d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'YPlacement', None, None, 'Vertical adjustment for placement-in design units'),
396d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'XAdvance', None, None, 'Horizontal adjustment for advance-in design units (only used for horizontal writing)'),
397d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'YAdvance', None, None, 'Vertical adjustment for advance-in design units (only used for vertical writing)'),
398d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'XPlaDevice', None, None, 'Offset to Device table for horizontal placement-measured from beginning of PosTable (may be NULL)'),
399d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'YPlaDevice', None, None, 'Offset to Device table for vertical placement-measured from beginning of PosTable (may be NULL)'),
400d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'XAdvDevice', None, None, 'Offset to Device table for horizontal advance-measured from beginning of PosTable (may be NULL)'),
401d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'YAdvDevice', None, None, 'Offset to Device table for vertical advance-measured from beginning of PosTable (may be NULL)'),
402d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
403d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
404d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('AnchorFormat1', [
405d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'AnchorFormat', None, None, 'Format identifier-format = 1'),
406d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'XCoordinate', None, None, 'Horizontal value-in design units'),
407d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'YCoordinate', None, None, 'Vertical value-in design units'),
408d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
409d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
410d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('AnchorFormat2', [
411d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'AnchorFormat', None, None, 'Format identifier-format = 2'),
412d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'XCoordinate', None, None, 'Horizontal value-in design units'),
413d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'YCoordinate', None, None, 'Vertical value-in design units'),
414d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'AnchorPoint', None, None, 'Index to glyph contour point'),
415d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
416d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
417d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('AnchorFormat3', [
418d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'AnchorFormat', None, None, 'Format identifier-format = 3'),
419d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'XCoordinate', None, None, 'Horizontal value-in design units'),
420d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'YCoordinate', None, None, 'Vertical value-in design units'),
421d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'XDeviceTable', None, None, 'Offset to Device table for X coordinate- from beginning of Anchor table (may be NULL)'),
422d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'YDeviceTable', None, None, 'Offset to Device table for Y coordinate- from beginning of Anchor table (may be NULL)'),
423d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
424d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
425d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('MarkArray', [
426d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'MarkCount', None, None, 'Number of MarkRecords'),
427d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'MarkRecord', 'MarkCount', 0, 'Array of MarkRecords-in Coverage order'),
428d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
429d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
430d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('MarkRecord', [
431d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Class', None, None, 'Class defined for this mark'),
432d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MarkAnchor', None, None, 'Offset to Anchor table-from beginning of MarkArray table'),
433d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
434d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
435d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
436d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
4370de65295f66c882920988c6fe23485b7a4858575Behdad Esfahbod	# gsub
438d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
439d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
440d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('GSUB', [
441a221a57ccdeefc752384778444ee737d4559a516Behdad Esfahbod		('Version', 'Version', None, None, 'Version of the GSUB table-initially set to 0x00010000'),
442d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ScriptList', None, None, 'Offset to ScriptList table-from beginning of GSUB table'),
443d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'FeatureList', None, None, 'Offset to FeatureList table-from beginning of GSUB table'),
444d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LookupList', None, None, 'Offset to LookupList table-from beginning of GSUB table'),
445d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
446d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
447d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SingleSubstFormat1', [
448d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 1'),
449d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
450d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'DeltaGlyphID', None, None, 'Add to original GlyphID to get substitute GlyphID'),
451d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
452d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
453d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SingleSubstFormat2', [
454d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 2'),
455d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
456d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of GlyphIDs in the Substitute array'),
457d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Substitute', 'GlyphCount', 0, 'Array of substitute GlyphIDs-ordered by Coverage Index'),
458d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
459d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
460d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('MultipleSubstFormat1', [
461d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 1'),
462d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
463d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SequenceCount', None, None, 'Number of Sequence table offsets in the Sequence array'),
464d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Sequence', 'SequenceCount', 0, 'Array of offsets to Sequence tables-from beginning of Substitution table-ordered by Coverage Index'),
465d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
466d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
467d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Sequence', [
468d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of GlyphIDs in the Substitute array. This should always be greater than 0.'),
469d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Substitute', 'GlyphCount', 0, 'String of GlyphIDs to substitute'),
470d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
471d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
472d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('AlternateSubstFormat1', [
473d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 1'),
474d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
475d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'AlternateSetCount', None, None, 'Number of AlternateSet tables'),
476d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'AlternateSet', 'AlternateSetCount', 0, 'Array of offsets to AlternateSet tables-from beginning of Substitution table-ordered by Coverage Index'),
477d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
478d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
479d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('AlternateSet', [
480d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of GlyphIDs in the Alternate array'),
481d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Alternate', 'GlyphCount', 0, 'Array of alternate GlyphIDs-in arbitrary order'),
482d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
483d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
484d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LigatureSubstFormat1', [
485d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 1'),
486d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
487d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LigSetCount', None, None, 'Number of LigatureSet tables'),
488d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LigatureSet', 'LigSetCount', 0, 'Array of offsets to LigatureSet tables-from beginning of Substitution table-ordered by Coverage Index'),
489d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
490d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
491d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LigatureSet', [
492d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LigatureCount', None, None, 'Number of Ligature tables'),
493d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Ligature', 'LigatureCount', 0, 'Array of offsets to Ligature tables-from beginning of LigatureSet table-ordered by preference'),
494d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
495d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
496d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Ligature', [
497d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'LigGlyph', None, None, 'GlyphID of ligature to substitute'),
498d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CompCount', None, None, 'Number of components in the ligature'),
499d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Component', 'CompCount', -1, 'Array of component GlyphIDs-start with the second component-ordered in writing direction'),
500d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
501d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
502d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SubstLookupRecord', [
503d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SequenceIndex', None, None, 'Index into current glyph sequence-first glyph = 0'),
504d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupListIndex', None, None, 'Lookup to apply to that position-zero-based'),
505d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
506d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
507d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ContextSubstFormat1', [
508d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 1'),
509d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
510d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubRuleSetCount', None, None, 'Number of SubRuleSet tables-must equal GlyphCount in Coverage table'),
511d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'SubRuleSet', 'SubRuleSetCount', 0, 'Array of offsets to SubRuleSet tables-from beginning of Substitution table-ordered by Coverage Index'),
512d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
513d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
514d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SubRuleSet', [
515d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubRuleCount', None, None, 'Number of SubRule tables'),
516d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'SubRule', 'SubRuleCount', 0, 'Array of offsets to SubRule tables-from beginning of SubRuleSet table-ordered by preference'),
517d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
518d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
519d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SubRule', [
520d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Total number of glyphs in input glyph sequence-includes the first glyph'),
521d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstCount', None, None, 'Number of SubstLookupRecords'),
522d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Input', 'GlyphCount', -1, 'Array of input GlyphIDs-start with second glyph'),
523d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'SubstLookupRecord', 'SubstCount', 0, 'Array of SubstLookupRecords-in design order'),
524d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
525d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
526d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ContextSubstFormat2', [
527d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 2'),
528d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
529d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ClassDef', None, None, 'Offset to glyph ClassDef table-from beginning of Substitution table'),
530b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'SubClassSetCount', None, None, 'Number of SubClassSet tables'),
531b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'SubClassSet', 'SubClassSetCount', 0, 'Array of offsets to SubClassSet tables-from beginning of Substitution table-ordered by class-may be NULL'),
532d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
533d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
534d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SubClassSet', [
535e97a27bf18c6da4e6698dd1ac6cc9165780bc8d5jvr		('uint16', 'SubClassRuleCount', None, None, 'Number of SubClassRule tables'),
536d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'SubClassRule', 'SubClassRuleCount', 0, 'Array of offsets to SubClassRule tables-from beginning of SubClassSet-ordered by preference'),
537d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
538d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
539d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('SubClassRule', [
540d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Total number of classes specified for the context in the rule-includes the first class'),
541d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstCount', None, None, 'Number of SubstLookupRecords'),
542d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Class', 'GlyphCount', -1, 'Array of classes-beginning with the second class-to be matched to the input glyph class sequence'),
543d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'SubstLookupRecord', 'SubstCount', 0, 'Array of Substitution lookups-in design order'),
544d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
545d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
546d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ContextSubstFormat3', [
547d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 3'),
548d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of glyphs in the input glyph sequence'),
549d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstCount', None, None, 'Number of SubstLookupRecords'),
550d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', 'GlyphCount', 0, 'Array of offsets to Coverage table-from beginning of Substitution table-in glyph sequence order'),
551d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'SubstLookupRecord', 'SubstCount', 0, 'Array of SubstLookupRecords-in design order'),
552d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
553d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
554d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainContextSubstFormat1', [
555d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 1'),
556d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
557d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ChainSubRuleSetCount', None, None, 'Number of ChainSubRuleSet tables-must equal GlyphCount in Coverage table'),
558d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ChainSubRuleSet', 'ChainSubRuleSetCount', 0, 'Array of offsets to ChainSubRuleSet tables-from beginning of Substitution table-ordered by Coverage Index'),
559d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
560d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
561d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainSubRuleSet', [
562d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'ChainSubRuleCount', None, None, 'Number of ChainSubRule tables'),
563d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ChainSubRule', 'ChainSubRuleCount', 0, 'Array of offsets to ChainSubRule tables-from beginning of ChainSubRuleSet table-ordered by preference'),
564d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
565d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
566d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainSubRule', [
567d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BacktrackGlyphCount', None, None, 'Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)'),
568d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Backtrack', 'BacktrackGlyphCount', 0, "Array of backtracking GlyphID's (to be matched before the input sequence)"),
569d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'InputGlyphCount', None, None, 'Total number of glyphs in the input sequence (includes the first glyph)'),
570d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'Input', 'InputGlyphCount', -1, 'Array of input GlyphIDs (start with second glyph)'),
571b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'LookAheadGlyphCount', None, None, 'Total number of glyphs in the look ahead sequence (number of glyphs to be matched after the input sequence)'),
572b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('GlyphID', 'LookAhead', 'LookAheadGlyphCount', 0, "Array of lookahead GlyphID's (to be matched after the input sequence)"),
573d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstCount', None, None, 'Number of SubstLookupRecords'),
574d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'SubstLookupRecord', 'SubstCount', 0, 'Array of SubstLookupRecords (in design order)'),
575d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
576d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
577d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainContextSubstFormat2', [
578d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 2'),
579d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table-from beginning of Substitution table'),
580d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BacktrackClassDef', None, None, 'Offset to glyph ClassDef table containing backtrack sequence data-from beginning of Substitution table'),
581d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'InputClassDef', None, None, 'Offset to glyph ClassDef table containing input sequence data-from beginning of Substitution table'),
582b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'LookAheadClassDef', None, None, 'Offset to glyph ClassDef table containing lookahead sequence data-from beginning of Substitution table'),
583b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'ChainSubClassSetCount', None, None, 'Number of ChainSubClassSet tables'),
584b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'ChainSubClassSet', 'ChainSubClassSetCount', 0, 'Array of offsets to ChainSubClassSet tables-from beginning of Substitution table-ordered by input class-may be NULL'),
585d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
586d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
587d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainSubClassSet', [
588b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'ChainSubClassRuleCount', None, None, 'Number of ChainSubClassRule tables'),
589d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ChainSubClassRule', 'ChainSubClassRuleCount', 0, 'Array of offsets to ChainSubClassRule tables-from beginning of ChainSubClassSet-ordered by preference'),
590d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
591d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
592d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainSubClassRule', [
593d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BacktrackGlyphCount', None, None, 'Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)'),
594d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Backtrack', 'BacktrackGlyphCount', 0, 'Array of backtracking classes(to be matched before the input sequence)'),
595d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'InputGlyphCount', None, None, 'Total number of classes in the input sequence (includes the first class)'),
596d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'Input', 'InputGlyphCount', -1, 'Array of input classes(start with second class; to be matched with the input glyph sequence)'),
597b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'LookAheadGlyphCount', None, None, 'Total number of classes in the look ahead sequence (number of classes to be matched after the input sequence)'),
598d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookAhead', 'LookAheadGlyphCount', 0, 'Array of lookahead classes(to be matched after the input sequence)'),
599d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstCount', None, None, 'Number of SubstLookupRecords'),
600d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'SubstLookupRecord', 'SubstCount', 0, 'Array of SubstLookupRecords (in design order)'),
601d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
602d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
603d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ChainContextSubstFormat3', [
604d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 3'),
605d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BacktrackGlyphCount', None, None, 'Number of glyphs in the backtracking sequence'),
606d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BacktrackCoverage', 'BacktrackGlyphCount', 0, 'Array of offsets to coverage tables in backtracking sequence, in glyph sequence order'),
607d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'InputGlyphCount', None, None, 'Number of glyphs in input sequence'),
608d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'InputCoverage', 'InputGlyphCount', 0, 'Array of offsets to coverage tables in input sequence, in glyph sequence order'),
609b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'LookAheadGlyphCount', None, None, 'Number of glyphs in lookahead sequence'),
610b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'LookAheadCoverage', 'LookAheadGlyphCount', 0, 'Array of offsets to coverage tables in lookahead sequence, in glyph sequence order'),
611d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'SubstCount', None, None, 'Number of SubstLookupRecords'),
612d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'SubstLookupRecord', 'SubstCount', 0, 'Array of SubstLookupRecords, in design order'),
613d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
614d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
615d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ExtensionSubstFormat1', [
616ea017bd66f790d066a3f4f0b5974479875dd5dfcBehdad Esfahbod		('uint16', 'ExtFormat', None, None, 'Format identifier. Set to 1.'),
617ea017bd66f790d066a3f4f0b5974479875dd5dfcBehdad Esfahbod		('uint16', 'ExtensionLookupType', None, None, 'Lookup type of subtable referenced by ExtensionOffset (i.e. the extension subtable).'),
618823f8cd15f16bb9dc3991c2672f16dd90579711bjvr		('LOffset', 'ExtSubTable', None, None, 'Array of offsets to Lookup tables-from beginning of LookupList -zero based (first lookup is Lookup index = 0)'),
619d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
620d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
6218e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr	('ReverseChainSingleSubstFormat1', [
6228e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('uint16', 'SubstFormat', None, None, 'Format identifier-format = 1'),
6238e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('Offset', 'Coverage', None, 0, 'Offset to Coverage table - from beginning of Substitution table'),
6248e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('uint16', 'BacktrackGlyphCount', None, None, 'Number of glyphs in the backtracking sequence'),
6258e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('Offset', 'BacktrackCoverage', 'BacktrackGlyphCount', 0, 'Array of offsets to coverage tables in backtracking sequence, in glyph sequence order'),
6268e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('uint16', 'LookAheadGlyphCount', None, None, 'Number of glyphs in lookahead sequence'),
6278e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('Offset', 'LookAheadCoverage', 'LookAheadGlyphCount', 0, 'Array of offsets to coverage tables in lookahead sequence, in glyph sequence order'),
6288e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('uint16', 'GlyphCount', None, None, 'Number of GlyphIDs in the Substitute array'),
6298e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr		('GlyphID', 'Substitute', 'GlyphCount', 0, 'Array of substitute GlyphIDs-ordered by Coverage index'),
6308e1d75b1a3fb4874bb78d9c34a11ba30de81a5ccjvr	]),
631d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
632d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
6330de65295f66c882920988c6fe23485b7a4858575Behdad Esfahbod	# gdef
634d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
635d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
636d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('GDEF', [
637a221a57ccdeefc752384778444ee737d4559a516Behdad Esfahbod		('Version', 'Version', None, None, 'Version of the GDEF table-initially 0x00010000'),
638d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'GlyphClassDef', None, None, 'Offset to class definition table for glyph type-from beginning of GDEF header (may be NULL)'),
639d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'AttachList', None, None, 'Offset to list of glyphs with attachment points-from beginning of GDEF header (may be NULL)'),
640d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LigCaretList', None, None, 'Offset to list of positioning points for ligature carets-from beginning of GDEF header (may be NULL)'),
641d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MarkAttachClassDef', None, None, 'Offset to class definition table for mark attachment type-from beginning of GDEF header (may be NULL)'),
6423fa26d783f6a2ab5103df66a99d0322491e1d8a6Behdad Esfahbod		('Offset', 'MarkGlyphSetsDef', None, 'int(round(Version*0x10000)) >= 0x00010002', 'Offset to the table of mark set definitions-from beginning of GDEF header (may be NULL)'),
643d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
644d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
645d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('AttachList', [
646d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table - from beginning of AttachList table'),
647d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of glyphs with attachment points'),
648d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'AttachPoint', 'GlyphCount', 0, 'Array of offsets to AttachPoint tables-from beginning of AttachList table-in Coverage Index order'),
649d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
650d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
651d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('AttachPoint', [
652d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PointCount', None, None, 'Number of attachment points on this glyph'),
653d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'PointIndex', 'PointCount', 0, 'Array of contour point indices -in increasing numerical order'),
654d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
655d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
656d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LigCaretList', [
657d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Coverage', None, None, 'Offset to Coverage table - from beginning of LigCaretList table'),
658d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LigGlyphCount', None, None, 'Number of ligature glyphs'),
659d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'LigGlyph', 'LigGlyphCount', 0, 'Array of offsets to LigGlyph tables-from beginning of LigCaretList table-in Coverage Index order'),
660d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
661d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
662d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('LigGlyph', [
663d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CaretCount', None, None, 'Number of CaretValues for this ligature (components - 1)'),
664d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'CaretValue', 'CaretCount', 0, 'Array of offsets to CaretValue tables-from beginning of LigGlyph table-in increasing coordinate order'),
665d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
666d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
667d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('CaretValueFormat1', [
668d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CaretValueFormat', None, None, 'Format identifier-format = 1'),
669d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'Coordinate', None, None, 'X or Y value, in design units'),
670d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
671d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
672d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('CaretValueFormat2', [
673d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CaretValueFormat', None, None, 'Format identifier-format = 2'),
674d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CaretValuePoint', None, None, 'Contour point index on glyph'),
675d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
676d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
677d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('CaretValueFormat3', [
678d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'CaretValueFormat', None, None, 'Format identifier-format = 3'),
679d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'Coordinate', None, None, 'X or Y value, in design units'),
680d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'DeviceTable', None, None, 'Offset to Device table for X or Y value-from beginning of CaretValue table'),
681d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
682d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
6835b9cabcb9a83e2d95e43c4b6a113f7dc71169c7fBehdad Esfahbod	('MarkGlyphSetsDef', [
6845b9cabcb9a83e2d95e43c4b6a113f7dc71169c7fBehdad Esfahbod		('uint16', 'MarkSetTableFormat', None, None, 'Format identifier == 1'),
6855b9cabcb9a83e2d95e43c4b6a113f7dc71169c7fBehdad Esfahbod		('uint16', 'MarkSetCount', None, None, 'Number of mark sets defined'),
6865b9cabcb9a83e2d95e43c4b6a113f7dc71169c7fBehdad Esfahbod		('LOffset', 'Coverage', 'MarkSetCount', 0, 'Array of offsets to mark set coverage tables.'),
6875b9cabcb9a83e2d95e43c4b6a113f7dc71169c7fBehdad Esfahbod	]),
688d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
689d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
6900de65295f66c882920988c6fe23485b7a4858575Behdad Esfahbod	# base
691d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
692d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
693d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BASE', [
694a221a57ccdeefc752384778444ee737d4559a516Behdad Esfahbod		('Version', 'Version', None, None, 'Version of the BASE table-initially 0x00010000'),
695d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'HorizAxis', None, None, 'Offset to horizontal Axis table-from beginning of BASE table-may be NULL'),
696d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'VertAxis', None, None, 'Offset to vertical Axis table-from beginning of BASE table-may be NULL'),
697d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
698d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
699d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('Axis', [
700d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseTagList', None, None, 'Offset to BaseTagList table-from beginning of Axis table-may be NULL'),
701d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseScriptList', None, None, 'Offset to BaseScriptList table-from beginning of Axis table'),
702d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
703d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
704d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseTagList', [
705d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseTagCount', None, None, 'Number of baseline identification tags in this text direction-may be zero (0)'),
706d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'BaselineTag', 'BaseTagCount', 0, 'Array of 4-byte baseline identification tags-must be in alphabetical order'),
707d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
708d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
709d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseScriptList', [
710d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseScriptCount', None, None, 'Number of BaseScriptRecords defined'),
711d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'BaseScriptRecord', 'BaseScriptCount', 0, 'Array of BaseScriptRecords-in alphabetical order by BaseScriptTag'),
712d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
713d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
714d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseScriptRecord', [
715d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'BaseScriptTag', None, None, '4-byte script identification tag'),
716d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseScript', None, None, 'Offset to BaseScript table-from beginning of BaseScriptList'),
717d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
718d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
719d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseScript', [
720d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseValues', None, None, 'Offset to BaseValues table-from beginning of BaseScript table-may be NULL'),
721d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'DefaultMinMax', None, None, 'Offset to MinMax table- from beginning of BaseScript table-may be NULL'),
722d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseLangSysCount', None, None, 'Number of BaseLangSysRecords defined-may be zero (0)'),
723d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'BaseLangSysRecord', 'BaseLangSysCount', 0, 'Array of BaseLangSysRecords-in alphabetical order by BaseLangSysTag'),
724d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
725d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
726d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseLangSysRecord', [
727d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'BaseLangSysTag', None, None, '4-byte language system identification tag'),
728d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MinMax', None, None, 'Offset to MinMax table-from beginning of BaseScript table'),
729d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
730d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
731d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseValues', [
732d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'DefaultIndex', None, None, 'Index number of default baseline for this script-equals index position of baseline tag in BaselineArray of the BaseTagList'),
733d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseCoordCount', None, None, 'Number of BaseCoord tables defined-should equal BaseTagCount in the BaseTagList'),
734d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'BaseCoord', 'BaseCoordCount', 0, 'Array of offsets to BaseCoord-from beginning of BaseValues table-order matches BaselineTag array in the BaseTagList'),
735d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
736d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
737d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('MinMax', [
738d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MinCoord', None, None, 'Offset to BaseCoord table-defines minimum extent value-from the beginning of MinMax table-may be NULL'),
739d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MaxCoord', None, None, 'Offset to BaseCoord table-defines maximum extent value-from the beginning of MinMax table-may be NULL'),
740d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'FeatMinMaxCount', None, None, 'Number of FeatMinMaxRecords-may be zero (0)'),
741d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'FeatMinMaxRecord', 'FeatMinMaxCount', 0, 'Array of FeatMinMaxRecords-in alphabetical order, by FeatureTableTag'),
742d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
743d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
744d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('FeatMinMaxRecord', [
745d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'FeatureTableTag', None, None, '4-byte feature identification tag-must match FeatureTag in FeatureList'),
746d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MinCoord', None, None, 'Offset to BaseCoord table-defines minimum extent value-from beginning of MinMax table-may be NULL'),
747d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'MaxCoord', None, None, 'Offset to BaseCoord table-defines maximum extent value-from beginning of MinMax table-may be NULL'),
748d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
749d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
750d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseCoordFormat1', [
751d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseCoordFormat', None, None, 'Format identifier-format = 1'),
752d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'Coordinate', None, None, 'X or Y value, in design units'),
753d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
754d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
755d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseCoordFormat2', [
756d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseCoordFormat', None, None, 'Format identifier-format = 2'),
757d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'Coordinate', None, None, 'X or Y value, in design units'),
758d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'ReferenceGlyph', None, None, 'GlyphID of control glyph'),
759d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseCoordPoint', None, None, 'Index of contour point on the ReferenceGlyph'),
760d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
761d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
762d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('BaseCoordFormat3', [
763d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'BaseCoordFormat', None, None, 'Format identifier-format = 3'),
764d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('int16', 'Coordinate', None, None, 'X or Y value, in design units'),
765d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'DeviceTable', None, None, 'Offset to Device table for X or Y value'),
766d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
767d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
768d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
769d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
7700de65295f66c882920988c6fe23485b7a4858575Behdad Esfahbod	# jstf
771d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	#
772d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
773d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JSTF', [
774a221a57ccdeefc752384778444ee737d4559a516Behdad Esfahbod		('Version', 'Version', None, None, 'Version of the JSTF table-initially set to 0x00010000'),
775d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'JstfScriptCount', None, None, 'Number of JstfScriptRecords in this table'),
776d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'JstfScriptRecord', 'JstfScriptCount', 0, 'Array of JstfScriptRecords-in alphabetical order, by JstfScriptTag'),
777d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
778d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
779d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfScriptRecord', [
780d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'JstfScriptTag', None, None, '4-byte JstfScript identification'),
781d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'JstfScript', None, None, 'Offset to JstfScript table-from beginning of JSTF Header'),
782d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
783d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
784d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfScript', [
785d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ExtenderGlyph', None, None, 'Offset to ExtenderGlyph table-from beginning of JstfScript table-may be NULL'),
786d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'DefJstfLangSys', None, None, 'Offset to Default JstfLangSys table-from beginning of JstfScript table-may be NULL'),
787d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'JstfLangSysCount', None, None, 'Number of JstfLangSysRecords in this table- may be zero (0)'),
788d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('struct', 'JstfLangSysRecord', 'JstfLangSysCount', 0, 'Array of JstfLangSysRecords-in alphabetical order, by JstfLangSysTag'),
789d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
790d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
791d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfLangSysRecord', [
792d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Tag', 'JstfLangSysTag', None, None, '4-byte JstfLangSys identifier'),
793d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'JstfLangSys', None, None, 'Offset to JstfLangSys table-from beginning of JstfScript table'),
794d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
795d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
796d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('ExtenderGlyph', [
797d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GlyphCount', None, None, 'Number of Extender Glyphs in this script'),
798d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('GlyphID', 'ExtenderGlyph', 'GlyphCount', 0, 'GlyphIDs-in increasing numerical order'),
799d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
800d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
801d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfLangSys', [
802b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('uint16', 'JstfPriorityCount', None, None, 'Number of JstfPriority tables'),
803b47e3ba3ae2ae6ffab891b2b9dcb39f98262484bjvr		('Offset', 'JstfPriority', 'JstfPriorityCount', 0, 'Array of offsets to JstfPriority tables-from beginning of JstfLangSys table-in priority order'),
804d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
805d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
806d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfPriority', [
807d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ShrinkageEnableGSUB', None, None, 'Offset to Shrinkage Enable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL'),
808d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ShrinkageDisableGSUB', None, None, 'Offset to Shrinkage Disable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL'),
809d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ShrinkageEnableGPOS', None, None, 'Offset to Shrinkage Enable JstfGPOSModList table-from beginning of JstfPriority table-may be NULL'),
810d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ShrinkageDisableGPOS', None, None, 'Offset to Shrinkage Disable JstfGPOSModList table-from beginning of JstfPriority table-may be NULL'),
811d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ShrinkageJstfMax', None, None, 'Offset to Shrinkage JstfMax table-from beginning of JstfPriority table -may be NULL'),
812d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ExtensionEnableGSUB', None, None, 'Offset to Extension Enable JstfGSUBModList table-may be NULL'),
813d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ExtensionDisableGSUB', None, None, 'Offset to Extension Disable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL'),
814d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ExtensionEnableGPOS', None, None, 'Offset to Extension Enable JstfGSUBModList table-may be NULL'),
815d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ExtensionDisableGPOS', None, None, 'Offset to Extension Disable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL'),
816d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'ExtensionJstfMax', None, None, 'Offset to Extension JstfMax table-from beginning of JstfPriority table -may be NULL'),
817d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
818d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
819d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfGSUBModList', [
820d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupCount', None, None, 'Number of lookups for this modification'),
821d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GSUBLookupIndex', 'LookupCount', 0, 'Array of LookupIndex identifiers in GSUB-in increasing numerical order'),
822d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
823d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
824d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfGPOSModList', [
825d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupCount', None, None, 'Number of lookups for this modification'),
826d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'GPOSLookupIndex', 'LookupCount', 0, 'Array of LookupIndex identifiers in GPOS-in increasing numerical order'),
827d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
828d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
829d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	('JstfMax', [
830d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('uint16', 'LookupCount', None, None, 'Number of lookup Indices for this modification'),
831d4d151390d1288f8d2df30f6dfa26a309c7334dajvr		('Offset', 'Lookup', 'LookupCount', 0, 'Array of offsets to GPOS-type lookup tables-from beginning of JstfMax table-in design order'),
832d4d151390d1288f8d2df30f6dfa26a309c7334dajvr	]),
833d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
834f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	#
835f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	# math
836f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	#
837d4d151390d1288f8d2df30f6dfa26a309c7334dajvr
838f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MATH', [
839f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Version', 'Version', None, None, 'Version of the MATH table-initially set to 0x00010000.'),
840f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'MathConstants', None, None, 'Offset to MathConstants table - from the beginning of MATH table.'),
841f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'MathGlyphInfo', None, None, 'Offset to MathGlyphInfo table - from the beginning of MATH table.'),
842f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'MathVariants', None, None, 'Offset to MathVariants table - from the beginning of MATH table.'),
843f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
844f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
845f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathValueRecord', [
846f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('int16', 'Value', None, None, 'The X or Y value in design units.'),
847f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'DeviceTable', None, None, 'Offset to the device table - from the beginning of parent table. May be NULL. Suggested format for device table is 1.'),
848f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
849f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
850f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathConstants', [
851f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('int16', 'ScriptPercentScaleDown', None, None, 'Percentage of scaling down for script level 1. Suggested value: 80%.'),
852f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('int16', 'ScriptScriptPercentScaleDown', None, None, 'Percentage of scaling down for script level 2 (ScriptScript). Suggested value: 60%.'),
853f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'DelimitedSubFormulaMinHeight', None, None, 'Minimum height required for a delimited expression to be treated as a subformula. Suggested value: normal line height x1.5.'),
854f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'DisplayOperatorMinHeight', None, None, 'Minimum height of n-ary operators (such as integral and summation) for formulas in display mode.'),
855f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'MathLeading', None, None, 'White space to be left between math formulas to ensure proper line spacing. For example, for applications that treat line gap as a part of line ascender, formulas with ink  going above (os2.sTypoAscender + os2.sTypoLineGap - MathLeading) or with ink going below os2.sTypoDescender will result in increasing line height.'),
856f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'AxisHeight', None, None, 'Axis height of the font.'),
857f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'AccentBaseHeight', None, None, 'Maximum (ink) height of accent base that does not require raising the accents. Suggested: x-height of the font (os2.sxHeight) plus any possible overshots.'),
858f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FlattenedAccentBaseHeight', None, None, 'Maximum (ink) height of accent base that does not require flattening the accents. Suggested: cap height of the font (os2.sCapHeight).'),
859f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SubscriptShiftDown', None, None, 'The standard shift down applied to subscript elements. Positive for moving in the downward direction. Suggested: os2.ySubscriptYOffset.'),
860f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SubscriptTopMax', None, None, 'Maximum allowed height of the (ink) top of subscripts that does not require moving subscripts further down. Suggested: 4/5 x-height.'),
861f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SubscriptBaselineDropMin', None, None, 'Minimum allowed drop of the baseline of subscripts relative to the (ink) bottom of the base. Checked for bases that are treated as a box or extended shape. Positive for subscript baseline dropped below the base bottom.'),
862f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SuperscriptShiftUp', None, None, 'Standard shift up applied to superscript elements. Suggested: os2.ySuperscriptYOffset.'),
863f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SuperscriptShiftUpCramped', None, None, 'Standard shift of superscripts relative to the base, in cramped style.'),
864f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SuperscriptBottomMin', None, None, 'Minimum allowed height of the (ink) bottom of superscripts that does not require moving subscripts further up. Suggested: 1/4 x-height.'),
865f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SuperscriptBaselineDropMax', None, None, 'Maximum allowed drop of the baseline of superscripts relative to the (ink) top of the base. Checked for bases that are treated as a box or extended shape. Positive for superscript baseline below the base top.'),
866f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SubSuperscriptGapMin', None, None, 'Minimum gap between the superscript and subscript ink. Suggested: 4x default rule thickness.'),
867f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SuperscriptBottomMaxWithSubscript', None, None, 'The maximum level to which the (ink) bottom of superscript can be pushed to increase the gap between superscript and subscript, before subscript starts being moved down. Suggested: 4/5 x-height.'),
868f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SpaceAfterScript', None, None, 'Extra white space to be added after each subscript and superscript. Suggested: 0.5pt for a 12 pt font.'),
869f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'UpperLimitGapMin', None, None, 'Minimum gap between the (ink) bottom of the upper limit, and the (ink) top of the base operator.'),
870f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'UpperLimitBaselineRiseMin', None, None, 'Minimum distance between baseline of upper limit and (ink) top of the base operator.'),
871f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'LowerLimitGapMin', None, None, 'Minimum gap between (ink) top of the lower limit, and (ink) bottom of the base operator.'),
872f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'LowerLimitBaselineDropMin', None, None, 'Minimum distance between baseline of the lower limit and (ink) bottom of the base operator.'),
873f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StackTopShiftUp', None, None, 'Standard shift up applied to the top element of a stack.'),
874f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StackTopDisplayStyleShiftUp', None, None, 'Standard shift up applied to the top element of a stack in display style.'),
875f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StackBottomShiftDown', None, None, 'Standard shift down applied to the bottom element of a stack. Positive for moving in the downward direction.'),
876f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StackBottomDisplayStyleShiftDown', None, None, 'Standard shift down applied to the bottom element of a stack in display style. Positive for moving in the downward direction.'),
877f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StackGapMin', None, None, 'Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element. Suggested: 3x default rule thickness.'),
878f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StackDisplayStyleGapMin', None, None, 'Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element in display style. Suggested: 7x default rule thickness.'),
879f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StretchStackTopShiftUp', None, None, 'Standard shift up applied to the top element of the stretch stack.'),
880f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StretchStackBottomShiftDown', None, None, 'Standard shift down applied to the bottom element of the stretch stack. Positive for moving in the downward direction.'),
881f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StretchStackGapAboveMin', None, None, 'Minimum gap between the ink of the stretched element, and the (ink) bottom of the element above. Suggested: UpperLimitGapMin'),
882f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'StretchStackGapBelowMin', None, None, 'Minimum gap between the ink of the stretched element, and the (ink) top of the element below. Suggested: LowerLimitGapMin.'),
883f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionNumeratorShiftUp', None, None, 'Standard shift up applied to the numerator.'),
884f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionNumeratorDisplayStyleShiftUp', None, None, 'Standard shift up applied to the numerator in display style. Suggested: StackTopDisplayStyleShiftUp.'),
885f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionDenominatorShiftDown', None, None, 'Standard shift down applied to the denominator. Positive for moving in the downward direction.'),
886f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionDenominatorDisplayStyleShiftDown', None, None, 'Standard shift down applied to the denominator in display style. Positive for moving in the downward direction. Suggested: StackBottomDisplayStyleShiftDown.'),
887f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionNumeratorGapMin', None, None, 'Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar. Suggested: default rule thickness'),
888f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionNumDisplayStyleGapMin', None, None, 'Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar in display style. Suggested: 3x default rule thickness.'),
889f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionRuleThickness', None, None, 'Thickness of the fraction bar. Suggested: default rule thickness.'),
890f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionDenominatorGapMin', None, None, 'Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar. Suggested: default rule thickness'),
891f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'FractionDenomDisplayStyleGapMin', None, None, 'Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar in display style. Suggested: 3x default rule thickness.'),
892f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SkewedFractionHorizontalGap', None, None, 'Horizontal distance between the top and bottom elements of a skewed fraction.'),
893f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'SkewedFractionVerticalGap', None, None, 'Vertical distance between the ink of the top and bottom elements of a skewed fraction.'),
894f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'OverbarVerticalGap', None, None, 'Distance between the overbar and the (ink) top of he base. Suggested: 3x default rule thickness.'),
895f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'OverbarRuleThickness', None, None, 'Thickness of overbar. Suggested: default rule thickness.'),
896f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'OverbarExtraAscender', None, None, 'Extra white space reserved above the overbar. Suggested: default rule thickness.'),
897f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'UnderbarVerticalGap', None, None, 'Distance between underbar and (ink) bottom of the base. Suggested: 3x default rule thickness.'),
898f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'UnderbarRuleThickness', None, None, 'Thickness of underbar. Suggested: default rule thickness.'),
899f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'UnderbarExtraDescender', None, None, 'Extra white space reserved below the underbar. Always positive. Suggested: default rule thickness.'),
900f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'RadicalVerticalGap', None, None, 'Space between the (ink) top of the expression and the bar over it. Suggested: 1 1/4 default rule thickness.'),
901f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'RadicalDisplayStyleVerticalGap', None, None, 'Space between the (ink) top of the expression and the bar over it. Suggested: default rule thickness + 1/4 x-height.'),
902f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'RadicalRuleThickness', None, None, 'Thickness of the radical rule. This is the thickness of the rule in designed or constructed radical signs. Suggested: default rule thickness.'),
903f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'RadicalExtraAscender', None, None, 'Extra white space reserved above the radical. Suggested: RadicalRuleThickness.'),
904f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'RadicalKernBeforeDegree', None, None, 'Extra horizontal kern before the degree of a radical, if such is present. Suggested: 5/18 of em.'),
905f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'RadicalKernAfterDegree', None, None, 'Negative kern after the degree of a radical, if such is present. Suggested: 10/18 of em.'),
906f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'RadicalDegreeBottomRaisePercent', None, None, 'Height of the bottom of the radical degree, if such is present, in proportion to the ascender of the radical sign. Suggested: 60%.'),
907f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
908f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
909f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathGlyphInfo', [
910f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'MathItalicsCorrectionInfo', None, None, 'Offset to MathItalicsCorrectionInfo table - from the beginning of MathGlyphInfo table.'),
911f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'MathTopAccentAttachment', None, None, 'Offset to MathTopAccentAttachment table - from the beginning of MathGlyphInfo table.'),
912f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'ExtendedShapeCoverage', None, None, 'Offset to coverage table for Extended Shape glyphs - from the  beginning of MathGlyphInfo table. When the left or right glyph of a box is an extended shape variant, the (ink) box (and not the default position defined by values in MathConstants table) should be used for vertical positioning purposes. May be NULL.'),
913f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'MathKernInfo', None, None, 'Offset to MathKernInfo table - from the beginning of MathGlyphInfo table.'),
914f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
915f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
916f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathItalicsCorrectionInfo', [
917f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'Coverage', None, None, 'Offset to Coverage table - from the beginning of MathItalicsCorrectionInfo table.'),
918f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'ItalicsCorrectionCount', None, None, 'Number of italics correction values. Should coincide with the number of covered glyphs.'),
919f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'ItalicsCorrection', 'ItalicsCorrectionCount', 0, 'Array of MathValueRecords defining italics correction values for each covered glyph.'),
920f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
921f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
922f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathTopAccentAttachment', [
923f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'TopAccentCoverage', None, None, 'Offset to Coverage table - from the beginning of  MathTopAccentAttachment table.'),
924f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'TopAccentAttachmentCount', None, None, 'Number of top accent attachment point values. Should coincide with the number of covered glyphs'),
925f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'TopAccentAttachment', 'TopAccentAttachmentCount', 0, 'Array of MathValueRecords defining top accent attachment points for each covered glyph'),
926f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
927f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
928f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathKernInfo', [
929f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'MathKernCoverage', None, None, 'Offset to Coverage table - from the beginning of the MathKernInfo table.'),
930f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'MathKernCount', None, None, 'Number of MathKernInfoRecords.'),
931f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathKernInfoRecord', 'MathKernInfoRecords', 'MathKernCount', 0, 'Array of MathKernInfoRecords, per-glyph information for mathematical positioning of subscripts and superscripts.'),
932f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
933f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
934f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathKernInfoRecord', [
935f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'TopRightMathKern', None, None, 'Offset to MathKern table for top right corner - from the beginning of MathKernInfo table. May be NULL.'),
936f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'TopLeftMathKern', None, None, 'Offset to MathKern table for the top left corner - from the beginning of MathKernInfo table. May be NULL.'),
937f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'BottomRightMathKern', None, None, 'Offset to MathKern table for bottom right corner - from the beginning of MathKernInfo table. May be NULL.'),
938f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'BottomLeftMathKern', None, None, 'Offset to MathKern table for bottom left corner - from the beginning of MathKernInfo table. May be NULL.'),
939f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
940f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
941f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathKern', [
942f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'HeightCount', None, None, 'Number of heights on which the kern value changes.'),
943f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'CorrectionHeight', 'HeightCount', 0, 'Array of correction heights at which the kern value changes. Sorted by the height value in design units.'),
944f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'KernValue', 'HeightCount', 1, 'Array of kern values corresponding to heights. First value is the kern value for all heights less or equal than the first height in this table.Last value is the value to be applied for all heights greater than the last height in this table. Negative values are interpreted as move glyphs closer to each other.'),
945f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
946f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
947f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathVariants', [
948f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'MinConnectorOverlap', None, None, 'Minimum overlap of connecting glyphs during glyph construction,  in design units.'),
949f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'VertGlyphCoverage', None, None, 'Offset to Coverage table - from the beginning of MathVariants table.'),
950f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'HorizGlyphCoverage', None, None, 'Offset to Coverage table - from the beginning of MathVariants table.'),
951f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'VertGlyphCount', None, None, 'Number of glyphs for which information is provided for vertically growing variants.'),
952f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'HorizGlyphCount', None, None, 'Number of glyphs for which information is provided for horizontally growing variants.'),
953f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'VertGlyphConstruction', 'VertGlyphCount', 0, 'Array of offsets to MathGlyphConstruction tables - from the beginning of the MathVariants table, for shapes growing in vertical direction.'),
954f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'HorizGlyphConstruction', 'HorizGlyphCount', 0, 'Array of offsets to MathGlyphConstruction tables - from the beginning of the MathVariants table, for shapes growing in horizontal direction.'),
955f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
956f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
957f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathGlyphConstruction', [
958f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('Offset', 'GlyphAssembly', None, None, 'Offset to GlyphAssembly table for this shape - from the beginning of MathGlyphConstruction table. May be NULL'),
959f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'VariantCount', None, None, 'Count of glyph growing variants for this glyph.'),
960f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathGlyphVariantRecord', 'MathGlyphVariantRecord', 'VariantCount', 0, 'MathGlyphVariantRecords for alternative variants of the glyphs.'),
961f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
962f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
963f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('MathGlyphVariantRecord', [
964f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('GlyphID', 'VariantGlyph', None, None, 'Glyph ID for the variant.'),
965f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'AdvanceMeasurement', None, None, 'Advance width/height, in design units, of the variant, in the direction of requested glyph extension.'),
966f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
967f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
968f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('GlyphAssembly', [
969f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('MathValueRecord', 'ItalicsCorrection', None, None, 'Italics correction of this GlyphAssembly. Should not depend on the assembly size.'),
970f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'PartCount', None, None, 'Number of parts in this assembly.'),
971f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('GlyphPartRecord', 'PartRecords', 'PartCount', 0, 'Array of part records, from left to right and bottom to top.'),
972f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
973f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
974f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	('GlyphPartRecord', [
975f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('GlyphID', 'glyph', None, None, 'Glyph ID for the part.'),
976f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'StartConnectorLength', None, None, 'Advance width/ height of the straight bar connector material, in design units, is at the beginning of the glyph, in the direction of the extension.'),
977f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'EndConnectorLength', None, None, 'Advance width/ height of the straight bar connector material, in design units, is at the end of the glyph, in the direction of the extension.'),
978f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'FullAdvance', None, None, 'Full advance width/height for this part, in the direction of the extension. In design units.'),
979f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod		('uint16', 'PartFlags', None, None, 'Part qualifiers. PartFlags enumeration currently uses only one bit: 0x0001 fExtender: If set, the part can be skipped or repeated. 0xFFFE Reserved'),
980f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod	]),
981f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod
982f952a22af7b59862d49ee2947932f4baab37a5edBehdad Esfahbod]
983