2 ******************************************************************************
4 * Copyright (C) 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