2 ******************************************************************************
4 * © 2016 and later: Unicode, Inc. and others.
5 * License & terms of use: http://www.unicode.org/copyright.html#License
7 ******************************************************************************
8 ****************************************************************************** *
10 * Copyright (C) 1999-2001, International Business Machines
11 * Corporation and others. All Rights Reserved.
13 ****************************************************************************** *
16 * created on: ??/??/2001
17 * created by: Eric R. Mader
42 le_uint16 searchRange
;
43 le_uint16 entrySelector
;
45 DirectoryEntry tableDirectory
[ANY_NUMBER
];
49 struct CMAPEncodingSubtableHeader
52 le_uint16 platformSpecificID
;
53 le_uint32 encodingOffset
;
59 le_uint16 numberSubtables
;
60 CMAPEncodingSubtableHeader encodingSubtableHeaders
[ANY_NUMBER
];
63 struct CMAPEncodingSubtable
70 struct CMAPFormat0Encoding
: CMAPEncodingSubtable
72 le_uint8 glyphIndexArray
[256];
75 struct CMAPFormat2Subheader
80 le_uint16 idRangeOffset
;
83 struct CMAPFormat2Encoding
: CMAPEncodingSubtable
85 le_uint16 subHeadKeys
[256];
86 CMAPFormat2Subheader subheaders
[ANY_NUMBER
];
89 struct CMAPFormat4Encoding
: CMAPEncodingSubtable
92 le_uint16 searchRange
;
93 le_uint16 entrySelector
;
95 le_uint16 endCodes
[ANY_NUMBER
];
96 // le_uint16 reservedPad;
97 // le_uint16 startCodes[ANY_NUMBER];
98 // le_uint16 idDelta[ANY_NUMBER];
99 // le_uint16 idRangeOffset[ANY_NUMBER];
100 // le_uint16 glyphIndexArray[ANY_NUMBER];
103 struct CMAPFormat6Encoding
: CMAPEncodingSubtable
106 le_uint16 entryCount
;
107 le_uint16 glyphIndexArray
[ANY_NUMBER
];
110 struct CMAPEncodingSubtable32
119 le_uint32 startCharCode
;
120 le_uint32 endCharCode
;
121 le_uint32 startGlyphCode
;
124 struct CMAPFormat8Encoding
: CMAPEncodingSubtable32
126 le_uint32 is32
[65536/32];
128 CMAPGroup groups
[ANY_NUMBER
];
131 struct CMAPFormat10Encoding
: CMAPEncodingSubtable32
133 le_uint32 startCharCode
;
134 le_uint32 numCharCodes
;
135 le_uint16 glyphs
[ANY_NUMBER
];
138 struct CMAPFormat12Encoding
: CMAPEncodingSubtable32
141 CMAPGroup groups
[ANY_NUMBER
];
144 typedef le_int32 fixed
;
156 le_uint32 checksumAdjustment
;
157 le_uint32 magicNumber
;
159 le_uint16 unitsPerEm
;
166 le_int16 lowestRecPPEM
;
167 le_int16 fontDirectionHint
;
168 le_int16 indexToLocFormat
;
169 le_int16 glyphDataFormat
;
177 le_uint16 maxContours
;
178 le_uint16 maxComponentPoints
;
179 le_uint16 maxComponentContours
;
181 le_uint16 maxTwilightPoints
;
182 le_uint16 maxStorage
;
183 le_uint16 maxFunctionDefs
;
184 le_uint16 maxInstructionDefs
;
185 le_uint16 maxStackElements
;
186 le_uint16 maxSizeOfInstructions
;
187 le_uint16 maxComponentElements
;
188 le_uint16 maxComponentDepth
;
197 le_uint16 advanceWidthMax
;
198 le_int16 minLeftSideBearing
;
199 le_int16 minRightSideBearing
;
201 le_int16 caretSlopeRise
;
202 le_int16 caretSlopeRun
;
203 le_int16 caretOffset
;
208 le_int16 metricDataFormat
;
209 le_uint16 numOfLongHorMetrics
;
214 le_uint16 advanceWidth
;
215 le_int16 leftSideBearing
;
220 LongHorMetric hMetrics
[ANY_NUMBER
]; // ANY_NUMBER = numOfLongHorMetrics from hhea table
221 // le_int16 leftSideBearing[ANY_NUMBER]; // ANY_NUMBER = numGlyphs - numOfLongHorMetrics