1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*************************************************************************** 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Copyright (C) 1998-2002, International Business Machines 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru************************************************************************/ 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef __FONTOBJECT_H 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define __FONTOBJECT_H 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdio.h> 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LETypes.h" 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef ANY_NUMBER 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define ANY_NUMBER 1 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct DirectoryEntry 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 tag; 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 checksum; 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 offset; 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 length; 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct SFNTDirectory 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 scalerType; 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 numTables; 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 searchRange; 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 entrySelector; 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 rangeShift; 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru DirectoryEntry tableDirectory[ANY_NUMBER]; 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPEncodingSubtableHeader 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 platformID; 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 platformSpecificID; 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 encodingOffset; 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPTable 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 version; 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 numberSubtables; 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CMAPEncodingSubtableHeader encodingSubtableHeaders[ANY_NUMBER]; 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPEncodingSubtable 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 format; 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 length; 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 language; 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPFormat0Encoding : CMAPEncodingSubtable 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint8 glyphIndexArray[256]; 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPFormat2Subheader 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 firstCode; 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 entryCount; 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 idDelta; 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 idRangeOffset; 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPFormat2Encoding : CMAPEncodingSubtable 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 subHeadKeys[256]; 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CMAPFormat2Subheader subheaders[ANY_NUMBER]; 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPFormat4Encoding : CMAPEncodingSubtable 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 segCountX2; 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 searchRange; 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 entrySelector; 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 rangeShift; 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 endCodes[ANY_NUMBER]; 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// le_uint16 reservedPad; 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// le_uint16 startCodes[ANY_NUMBER]; 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// le_uint16 idDelta[ANY_NUMBER]; 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// le_uint16 idRangeOffset[ANY_NUMBER]; 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// le_uint16 glyphIndexArray[ANY_NUMBER]; 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct CMAPFormat6Encoding : CMAPEncodingSubtable 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 firstCode; 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 entryCount; 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 glyphIndexArray[ANY_NUMBER]; 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_int32 fixed; 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct BigDate 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 bc; 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 ad; 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct HEADTable 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fixed version; 112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fixed fontRevision; 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 checksumAdjustment; 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 magicNumber; 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 flags; 116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 unitsPerEm; 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru BigDate created; 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru BigDate modified; 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 xMin; 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 yMin; 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 xMax; 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 yMax; 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 lowestRecPPEM; 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 fontDirectionHint; 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 indexToLocFormat; 126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 glyphDataFormat; 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct MAXPTable 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fixed version; 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 numGlyphs; 133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxPoints; 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxContours; 135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxComponentPoints; 136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxComponentContours; 137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxZones; 138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxTwilightPoints; 139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxStorage; 140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxFunctionDefs; 141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxInstructionDefs; 142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxStackElements; 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxSizeOfInstructions; 144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxComponentElements; 145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 maxComponentDepth; 146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct HHEATable 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fixed version; 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 ascent; 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 descent; 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 lineGap; 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 advanceWidthMax; 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 minLeftSideBearing; 156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 minRightSideBearing; 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 xMaxExtent; 158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 caretSlopeRise; 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 caretSlopeRun; 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 caretOffset; 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 reserved1; 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 reserved2; 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 reserved3; 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 reserved4; 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 metricDataFormat; 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 numOfLongHorMetrics; 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct LongHorMetric 170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 advanceWidth; 172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_int16 leftSideBearing; 173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct HMTXTable 176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LongHorMetric hMetrics[ANY_NUMBER]; // ANY_NUMBER = numOfLongHorMetrics from hhea table 178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// le_int16 leftSideBearing[ANY_NUMBER]; // ANY_NUMBER = numGlyphs - numOfLongHorMetrics 179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass FontObject 182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic: 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FontObject(char *fontName); 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ~FontObject(); 186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void *readTable(LETag tag, le_uint32 *length); 188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void deleteTable(void *table); 189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LEGlyphID unicodeToGlyph(LEUnicode32 unicode); 191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if 0 193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 unicodesToGlyphs(LEUnicode *chars, le_uint32 nChars, LEGlyphID *glyphs, 194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint32 *charIndices, le_bool rightToLeft); 195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 getUnitsPerEM(); 198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 getGlyphAdvance(LEGlyphID glyph); 200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate: 202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FontObject(); 203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru DirectoryEntry *findTable(LETag tag); 205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CMAPEncodingSubtable *findCMAP(le_uint16 platformID, le_uint16 platformSpecificID); 206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void initUnicodeCMAP(); 207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru SFNTDirectory *directory; 209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 numTables; 210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 searchRange; 211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 entrySelector; 212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 rangeShift; 213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CMAPTable *cmapTable; 215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 cmSegCount; 216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 cmSearchRange; 217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 cmEntrySelector; 218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 cmRangeShift; 219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 *cmEndCodes; 220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 *cmStartCodes; 221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 *cmIdDelta; 222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 *cmIdRangeOffset; 223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru HEADTable *headTable; 225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru HMTXTable *hmtxTable; 227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 numGlyphs; 228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru le_uint16 numOfLongHorMetrics; 229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru FILE *file; 231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 236