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