1 /***************************************************************************
3 * Copyright (C) 1998-2011, International Business Machines
4 * Corporation and others. All Rights Reserved.
6 ************************************************************************/
11 #include "layout/LETypes.h"
31 typedef struct DirectoryEntry DirectoryEntry;
38 le_uint16 searchRange;
39 le_uint16 entrySelector;
41 DirectoryEntry tableDirectory[ANY_NUMBER];
45 typedef struct SFNTDirectory SFNTDirectory;
49 struct CMAPEncodingSubtableHeader
52 le_uint16 platformSpecificID;
53 le_uint32 encodingOffset;
57 typedef struct CMAPEncodingSubtableHeader CMAPEncodingSubtableHeader;
63 le_uint16 numberSubtables;
64 CMAPEncodingSubtableHeader encodingSubtableHeaders[ANY_NUMBER];
68 typedef struct CMAPTable CMAPTable;
71 struct CMAPEncodingSubtable
79 typedef struct CMAPEncodingSubtable CMAPEncodingSubtable;
83 struct CMAPFormat0Encoding : CMAPEncodingSubtable
85 le_uint8 glyphIndexArray[256];
88 struct CMAPFormat0Encoding
90 CMAPEncodingSubtable base;
92 le_uint8 glyphIndexArray[256];
95 typedef struct CMAPFormat0Encoding CMAPFormat0Encoding;
98 struct CMAPFormat2Subheader
101 le_uint16 entryCount;
103 le_uint16 idRangeOffset;
107 typedef struct CMAPFormat2Subheader CMAPFormat2Subheader;
111 struct CMAPFormat2Encoding : CMAPEncodingSubtable
113 le_uint16 subHeadKeys[256];
114 CMAPFormat2Subheader subheaders[ANY_NUMBER];
117 struct CMAPFormat2Encoding
119 CMAPEncodingSubtable base;
121 le_uint16 subHeadKeys[256];
122 CMAPFormat2Subheader subheaders[ANY_NUMBER];
125 typedef struct CMAPFormat2Encoding CMAPFormat2Encoding;
129 struct CMAPFormat4Encoding : CMAPEncodingSubtable
131 le_uint16 segCountX2;
132 le_uint16 searchRange;
133 le_uint16 entrySelector;
134 le_uint16 rangeShift;
135 le_uint16 endCodes[ANY_NUMBER];
137 le_uint16 reservedPad;
138 le_uint16 startCodes[ANY_NUMBER];
139 le_uint16 idDelta[ANY_NUMBER];
140 le_uint16 idRangeOffset[ANY_NUMBER];
141 le_uint16 glyphIndexArray[ANY_NUMBER];
145 struct CMAPFormat4Encoding
147 CMAPEncodingSubtable base;
149 le_uint16 segCountX2;
150 le_uint16 searchRange;
151 le_uint16 entrySelector;
152 le_uint16 rangeShift;
153 le_uint16 endCodes[ANY_NUMBER];
155 // le_uint16 reservedPad;
156 // le_uint16 startCodes[ANY_NUMBER];
157 // le_uint16 idDelta[ANY_NUMBER];
158 // le_uint16 idRangeOffset[ANY_NUMBER];
159 // le_uint16 glyphIndexArray[ANY_NUMBER];
163 typedef struct CMAPFormat4Encoding CMAPFormat4Encoding;
167 struct CMAPFormat6Encoding : CMAPEncodingSubtable
170 le_uint16 entryCount;
171 le_uint16 glyphIndexArray[ANY_NUMBER];
174 struct CMAPFormat6Encoding
176 CMAPEncodingSubtable base;
179 le_uint16 entryCount;
180 le_uint16 glyphIndexArray[ANY_NUMBER];
183 typedef struct CMAPFormat6Encoding CMAPFormat6Encoding;
186 struct CMAPEncodingSubtable32
194 typedef struct CMAPEncodingSubtable32 CMAPEncodingSubtable32;
199 le_uint32 startCharCode;
200 le_uint32 endCharCode;
201 le_uint32 startGlyphCode;
205 typedef struct CMAPGroup CMAPGroup;
209 struct CMAPFormat8Encoding : CMAPEncodingSubtable32
211 le_uint32 is32[65536/32];
213 CMAPGroup groups[ANY_NUMBER];
216 struct CMAPFormat8Encoding
218 CMAPEncodingSubtable32 base;
220 le_uint32 is32[65536/32];
222 CMAPGroup groups[ANY_NUMBER];
225 typedef struct CMAPFormat8Encoding CMAPFormat8Encoding;
229 struct CMAPFormat10Encoding : CMAPEncodingSubtable32
231 le_uint32 startCharCode;
232 le_uint32 numCharCodes;
233 le_uint16 glyphs[ANY_NUMBER];
236 struct CMAPFormat10Encoding
238 CMAPEncodingSubtable32 base;
240 le_uint32 startCharCode;
241 le_uint32 numCharCodes;
242 le_uint16 glyphs[ANY_NUMBER];
245 typedef struct CMAPFormat10Encoding CMAPFormat10Encoding;
249 struct CMAPFormat12Encoding : CMAPEncodingSubtable32
252 CMAPGroup groups[ANY_NUMBER];
255 struct CMAPFormat12Encoding
257 CMAPEncodingSubtable32 base;
260 CMAPGroup groups[ANY_NUMBER];
263 typedef struct CMAPFormat12Encoding CMAPFormat12Encoding;
266 typedef le_int32 fixed;
275 typedef struct BigDate BigDate;
282 le_uint32 checksumAdjustment;
283 le_uint32 magicNumber;
285 le_uint16 unitsPerEm;
292 le_int16 lowestRecPPEM;
293 le_int16 fontDirectionHint;
294 le_int16 indexToLocFormat;
295 le_int16 glyphDataFormat;
299 typedef struct HEADTable HEADTable;
307 le_uint16 maxContours;
308 le_uint16 maxComponentPoints;
309 le_uint16 maxComponentContours;
311 le_uint16 maxTwilightPoints;
312 le_uint16 maxStorage;
313 le_uint16 maxFunctionDefs;
314 le_uint16 maxInstructionDefs;
315 le_uint16 maxStackElements;
316 le_uint16 maxSizeOfInstructions;
317 le_uint16 maxComponentElements;
318 le_uint16 maxComponentDepth;
322 typedef struct MAXPTable MAXPTable;
331 le_uint16 advanceWidthMax;
332 le_int16 minLeftSideBearing;
333 le_int16 minRightSideBearing;
335 le_int16 caretSlopeRise;
336 le_int16 caretSlopeRun;
337 le_int16 caretOffset;
342 le_int16 metricDataFormat;
343 le_uint16 numOfLongHorMetrics;
347 typedef struct HHEATable HHEATable;
352 le_uint16 advanceWidth;
353 le_int16 leftSideBearing;
357 typedef struct LongHorMetric LongHorMetric;
362 LongHorMetric hMetrics[ANY_NUMBER]; /* ANY_NUMBER = numOfLongHorMetrics from hhea table */
363 /* le_int16 leftSideBearing[ANY_NUMBER]; ANY_NUMBER = numGlyphs - numOfLongHorMetrics */
367 typedef struct HMTXTable HMTXTable;
372 PLATFORM_UNICODE = 0,
373 PLATFORM_MACINTOSH = 1,
375 PLATFORM_MICROSOFT = 3,
379 enum MacintoshEncodingID
384 enum MacintoshLanguageID
386 MACINTOSH_ENGLISH = 0
389 enum MicrosoftEncodingID
391 MICROSOFT_UNICODE_BMP = 1,
392 MICROSOFT_UNICODE_FULL = 10
395 enum MicrosoftLanguageID
397 MICROSOFT_ENGLISH = 0x409
402 NAME_COPYRIGHT_NOTICE = 0,
403 NAME_FONT_FAMILY = 1,
404 NAME_FONT_SUB_FAMILY = 2,
405 NAME_UNIQUE_FONT_ID = 3,
406 NAME_FULL_FONT_NAME = 4,
407 NAME_VERSION_STRING = 5,
408 NAME_POSTSCRIPT_NAME = 6,
410 NAME_MANUFACTURER = 8,
412 NAME_DESCRIPTION = 10,
413 NAME_VENDOR_URL = 11,
414 NAME_DESIGNER_URL = 12,
415 NAME_LICENSE_DESCRIPTION = 13,
416 NAME_LICENSE_URL = 14,
418 NAME_PREFERRED_FAMILY = 16,
419 NAME_PREFERRED_SUB_FAMILY = 17,
420 NAME_COMPATIBLE_FULL = 18,
421 NAME_SAMPLE_TEXT = 19,
422 NAME_POSTSCRIPT_CID = 20
427 le_uint16 platformID;
428 le_uint16 encodingID;
429 le_uint16 languageID;
436 typedef struct NameRecord NameRecord;
443 le_uint16 stringOffset;
444 NameRecord nameRecords[ANY_NUMBER];
448 typedef struct NAMETable NAMETable;