~gabriel1984sibiu/boost/icu

« back to all changes in this revision

Viewing changes to source/test/perf/leperf/sfnt.h

  • Committer: Grevutiu Gabriel
  • Date: 2017-05-02 14:38:27 UTC
  • Revision ID: gabriel1984sibiu@gmail.com-20170502143827-2om3uz0f8prw6nvc
initial source code

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************
 
2
*
 
3
*   Copyright (C) 1998-2013, International Business Machines
 
4
*   Corporation and others.  All Rights Reserved.
 
5
*
 
6
************************************************************************/
 
7
 
 
8
#ifndef __SFNT_H
 
9
#define __SFNT_H
 
10
 
 
11
#include "layout/LETypes.h"
 
12
 
 
13
U_NAMESPACE_USE
 
14
 
 
15
#ifndef ANY_NUMBER
 
16
#define ANY_NUMBER 1
 
17
#endif
 
18
 
 
19
struct DirectoryEntry
 
20
{
 
21
    le_uint32   tag;
 
22
    le_uint32   checksum;
 
23
    le_uint32   offset;
 
24
    le_uint32   length;
 
25
};
 
26
 
 
27
#ifndef __cplusplus
 
28
typedef struct DirectoryEntry DirectoryEntry;
 
29
#endif
 
30
 
 
31
struct SFNTDirectory
 
32
{
 
33
    le_uint32       scalerType;
 
34
    le_uint16       numTables;
 
35
    le_uint16       searchRange;
 
36
    le_uint16       entrySelector;
 
37
    le_uint16       rangeShift;
 
38
    DirectoryEntry  tableDirectory[ANY_NUMBER];
 
39
};
 
40
 
 
41
#ifndef __cplusplus
 
42
typedef struct SFNTDirectory SFNTDirectory;
 
43
#endif
 
44
 
 
45
 
 
46
struct CMAPEncodingSubtableHeader
 
47
{
 
48
    le_uint16   platformID;
 
49
    le_uint16   platformSpecificID;
 
50
    le_uint32   encodingOffset;
 
51
};
 
52
 
 
53
#ifndef __cplusplus
 
54
typedef struct CMAPEncodingSubtableHeader CMAPEncodingSubtableHeader;
 
55
#endif
 
56
 
 
57
struct CMAPTable
 
58
{
 
59
    le_uint16   version;
 
60
    le_uint16   numberSubtables;
 
61
    CMAPEncodingSubtableHeader encodingSubtableHeaders[ANY_NUMBER];
 
62
};
 
63
 
 
64
#ifndef __cplusplus
 
65
typedef struct CMAPTable CMAPTable;
 
66
#endif
 
67
 
 
68
struct CMAPEncodingSubtable
 
69
{
 
70
    le_uint16   format;
 
71
    le_uint16   length;
 
72
    le_uint16   language;
 
73
};
 
74
 
 
75
#ifndef __cplusplus
 
76
typedef struct CMAPEncodingSubtable CMAPEncodingSubtable;
 
77
#endif
 
78
 
 
79
#ifdef __cplusplus
 
80
struct CMAPFormat0Encoding : CMAPEncodingSubtable
 
81
{
 
82
    le_uint8    glyphIndexArray[256];
 
83
};
 
84
#else
 
85
struct CMAPFormat0Encoding
 
86
{
 
87
        CMAPEncodingSubtable base;
 
88
 
 
89
        le_uint8 glyphIndexArray[256];
 
90
};
 
91
 
 
92
typedef struct CMAPFormat0Encoding CMAPFormat0Encoding;
 
93
#endif
 
94
 
 
95
struct CMAPFormat2Subheader
 
96
{
 
97
    le_uint16   firstCode;
 
98
    le_uint16   entryCount;
 
99
    le_int16    idDelta;
 
100
    le_uint16   idRangeOffset;
 
101
};
 
102
 
 
103
#ifndef __cplusplus
 
104
typedef struct CMAPFormat2Subheader CMAPFormat2Subheader;
 
105
#endif
 
106
 
 
107
#ifdef __cplusplus
 
108
struct CMAPFormat2Encoding : CMAPEncodingSubtable
 
109
{
 
110
    le_uint16  subHeadKeys[256];
 
111
    CMAPFormat2Subheader subheaders[ANY_NUMBER];
 
112
};
 
113
#else
 
114
struct CMAPFormat2Encoding
 
115
{
 
116
        CMAPEncodingSubtable base;
 
117
 
 
118
    le_uint16  subHeadKeys[256];
 
119
    CMAPFormat2Subheader subheaders[ANY_NUMBER];
 
120
};
 
121
 
 
122
typedef struct CMAPFormat2Encoding CMAPFormat2Encoding;
 
123
#endif
 
124
 
 
125
#ifdef __cplusplus
 
126
struct CMAPFormat4Encoding : CMAPEncodingSubtable
 
127
{
 
128
    le_uint16   segCountX2;
 
129
    le_uint16   searchRange;
 
130
    le_uint16   entrySelector;
 
131
    le_uint16   rangeShift;
 
132
    le_uint16   endCodes[ANY_NUMBER];
 
133
/*
 
134
    le_uint16   reservedPad;
 
135
    le_uint16   startCodes[ANY_NUMBER];
 
136
    le_uint16   idDelta[ANY_NUMBER];
 
137
    le_uint16   idRangeOffset[ANY_NUMBER];
 
138
    le_uint16   glyphIndexArray[ANY_NUMBER];
 
139
*/
 
140
};
 
141
#else
 
142
struct CMAPFormat4Encoding
 
143
{
 
144
        CMAPEncodingSubtable base;
 
145
 
 
146
    le_uint16   segCountX2;
 
147
    le_uint16   searchRange;
 
148
    le_uint16   entrySelector;
 
149
    le_uint16   rangeShift;
 
150
    le_uint16   endCodes[ANY_NUMBER];
 
151
/*
 
152
//  le_uint16   reservedPad;
 
153
//  le_uint16   startCodes[ANY_NUMBER];
 
154
//  le_uint16   idDelta[ANY_NUMBER];
 
155
//  le_uint16   idRangeOffset[ANY_NUMBER];
 
156
//  le_uint16   glyphIndexArray[ANY_NUMBER];
 
157
*/
 
158
};
 
159
 
 
160
typedef struct CMAPFormat4Encoding CMAPFormat4Encoding;
 
161
#endif
 
162
 
 
163
#ifdef __cplusplus
 
164
struct CMAPFormat6Encoding : CMAPEncodingSubtable
 
165
{
 
166
    le_uint16   firstCode;
 
167
    le_uint16   entryCount;
 
168
    le_uint16   glyphIndexArray[ANY_NUMBER];
 
169
};
 
170
#else
 
171
struct CMAPFormat6Encoding
 
172
{
 
173
        CMAPEncodingSubtable base;
 
174
 
 
175
    le_uint16   firstCode;
 
176
    le_uint16   entryCount;
 
177
    le_uint16   glyphIndexArray[ANY_NUMBER];
 
178
};
 
179
 
 
180
typedef struct CMAPFormat6Encoding CMAPFormat6Encoding;
 
181
#endif
 
182
 
 
183
struct CMAPEncodingSubtable32
 
184
{
 
185
    le_uint32   format;
 
186
    le_uint32   length;
 
187
    le_uint32   language;
 
188
};
 
189
 
 
190
#ifndef __cplusplus
 
191
typedef struct CMAPEncodingSubtable32 CMAPEncodingSubtable32;
 
192
#endif
 
193
 
 
194
struct CMAPGroup
 
195
{
 
196
    le_uint32   startCharCode;
 
197
    le_uint32   endCharCode;
 
198
    le_uint32   startGlyphCode;
 
199
};
 
200
 
 
201
#ifndef __cplusplus
 
202
typedef struct CMAPGroup CMAPGroup;
 
203
#endif
 
204
 
 
205
#ifdef __cplusplus
 
206
struct CMAPFormat8Encoding : CMAPEncodingSubtable32
 
207
{
 
208
    le_uint32   is32[65536/32];
 
209
    le_uint32   nGroups;
 
210
    CMAPGroup   groups[ANY_NUMBER];
 
211
};
 
212
#else
 
213
struct CMAPFormat8Encoding
 
214
{
 
215
        CMAPEncodingSubtable32 base;
 
216
 
 
217
    le_uint32   is32[65536/32];
 
218
    le_uint32   nGroups;
 
219
    CMAPGroup   groups[ANY_NUMBER];
 
220
};
 
221
 
 
222
typedef struct CMAPFormat8Encoding CMAPFormat8Encoding;
 
223
#endif
 
224
 
 
225
#ifdef __cplusplus
 
226
struct CMAPFormat10Encoding : CMAPEncodingSubtable32
 
227
{
 
228
    le_uint32   startCharCode;
 
229
    le_uint32   numCharCodes;
 
230
    le_uint16   glyphs[ANY_NUMBER];
 
231
};
 
232
#else
 
233
struct CMAPFormat10Encoding
 
234
{
 
235
        CMAPEncodingSubtable32 base;
 
236
 
 
237
    le_uint32   startCharCode;
 
238
    le_uint32   numCharCodes;
 
239
    le_uint16   glyphs[ANY_NUMBER];
 
240
};
 
241
 
 
242
typedef struct CMAPFormat10Encoding CMAPFormat10Encoding;
 
243
#endif
 
244
 
 
245
#ifdef __cplusplus
 
246
struct CMAPFormat12Encoding : CMAPEncodingSubtable32
 
247
{
 
248
    le_uint32   nGroups;
 
249
    CMAPGroup   groups[ANY_NUMBER];
 
250
};
 
251
#else
 
252
struct CMAPFormat12Encoding
 
253
{
 
254
        CMAPEncodingSubtable32 base;
 
255
 
 
256
    le_uint32   nGroups;
 
257
    CMAPGroup   groups[ANY_NUMBER];
 
258
};
 
259
 
 
260
typedef struct CMAPFormat12Encoding CMAPFormat12Encoding;
 
261
#endif
 
262
 
 
263
typedef le_int32 fixed;
 
264
 
 
265
struct BigDate
 
266
{
 
267
    le_uint32   bc;
 
268
    le_uint32   ad;
 
269
};
 
270
 
 
271
#ifndef __cplusplus
 
272
typedef struct BigDate BigDate;
 
273
#endif
 
274
 
 
275
struct HEADTable
 
276
{
 
277
    fixed       version;
 
278
    fixed       fontRevision;
 
279
    le_uint32   checksumAdjustment;
 
280
    le_uint32   magicNumber;
 
281
    le_uint16   flags;
 
282
    le_uint16   unitsPerEm;
 
283
    BigDate     created;
 
284
    BigDate     modified;
 
285
    le_int16    xMin;
 
286
    le_int16    yMin;
 
287
    le_int16    xMax;
 
288
    le_int16    yMax;
 
289
    le_int16    lowestRecPPEM;
 
290
    le_int16    fontDirectionHint;
 
291
    le_int16    indexToLocFormat;
 
292
    le_int16    glyphDataFormat;
 
293
};
 
294
 
 
295
#ifndef __cplusplus
 
296
typedef struct HEADTable HEADTable;
 
297
#endif
 
298
 
 
299
struct MAXPTable
 
300
{
 
301
    fixed       version;
 
302
    le_uint16   numGlyphs;
 
303
    le_uint16   maxPoints;
 
304
    le_uint16   maxContours;
 
305
    le_uint16   maxComponentPoints;
 
306
    le_uint16   maxComponentContours;
 
307
    le_uint16   maxZones;
 
308
    le_uint16   maxTwilightPoints;
 
309
    le_uint16   maxStorage;
 
310
    le_uint16   maxFunctionDefs;
 
311
    le_uint16   maxInstructionDefs;
 
312
    le_uint16   maxStackElements;
 
313
    le_uint16   maxSizeOfInstructions;
 
314
    le_uint16   maxComponentElements;
 
315
    le_uint16   maxComponentDepth;
 
316
};
 
317
 
 
318
#ifndef __cplusplus
 
319
typedef struct MAXPTable MAXPTable;
 
320
#endif
 
321
 
 
322
struct HHEATable
 
323
{
 
324
    fixed       version;
 
325
    le_int16    ascent;
 
326
    le_int16    descent;
 
327
    le_int16    lineGap;
 
328
    le_uint16   advanceWidthMax;
 
329
    le_int16    minLeftSideBearing;
 
330
    le_int16    minRightSideBearing;
 
331
    le_int16    xMaxExtent;
 
332
    le_int16    caretSlopeRise;
 
333
    le_int16    caretSlopeRun;
 
334
    le_int16    caretOffset;
 
335
    le_int16    reserved1;
 
336
    le_int16    reserved2;
 
337
    le_int16    reserved3;
 
338
    le_int16    reserved4;
 
339
    le_int16    metricDataFormat;
 
340
    le_uint16   numOfLongHorMetrics;
 
341
};
 
342
 
 
343
#ifndef __cplusplus
 
344
typedef struct HHEATable HHEATable;
 
345
#endif
 
346
 
 
347
struct LongHorMetric
 
348
{
 
349
    le_uint16   advanceWidth;
 
350
    le_int16    leftSideBearing;
 
351
};
 
352
 
 
353
#ifndef __cplusplus
 
354
typedef struct LongHorMetric LongHorMetric;
 
355
#endif
 
356
 
 
357
struct HMTXTable
 
358
{
 
359
    LongHorMetric hMetrics[ANY_NUMBER];       /* ANY_NUMBER = numOfLongHorMetrics from hhea table */
 
360
/* le_int16        leftSideBearing[ANY_NUMBER];  ANY_NUMBER = numGlyphs - numOfLongHorMetrics     */
 
361
};
 
362
 
 
363
#ifndef __cplusplus
 
364
typedef struct HMTXTable HMTXTable;
 
365
#endif
 
366
 
 
367
enum PlatformID
 
368
{
 
369
    PLATFORM_UNICODE = 0,
 
370
    PLATFORM_MACINTOSH = 1,
 
371
    PLATFORM_ISO       = 2,
 
372
    PLATFORM_MICROSOFT = 3,
 
373
    PLATFORM_CUSTOM    = 4
 
374
};
 
375
 
 
376
enum MacintoshEncodingID
 
377
{
 
378
    MACINTOSH_ROMAN = 0
 
379
};
 
380
 
 
381
enum MacintoshLanguageID
 
382
{
 
383
    MACINTOSH_ENGLISH = 0
 
384
};
 
385
 
 
386
enum MicrosoftEncodingID
 
387
{
 
388
    MICROSOFT_UNICODE_BMP  =  1,
 
389
    MICROSOFT_UNICODE_FULL = 10
 
390
};
 
391
 
 
392
enum MicrosoftLanguageID
 
393
{
 
394
    MICROSOFT_ENGLISH = 0x409
 
395
};
 
396
 
 
397
enum NameID
 
398
{
 
399
    NAME_COPYRIGHT_NOTICE     = 0,
 
400
    NAME_FONT_FAMILY          = 1,
 
401
    NAME_FONT_SUB_FAMILY      = 2,
 
402
    NAME_UNIQUE_FONT_ID       = 3,
 
403
    NAME_FULL_FONT_NAME       = 4,
 
404
    NAME_VERSION_STRING       = 5,
 
405
    NAME_POSTSCRIPT_NAME      = 6,
 
406
    NAME_TRADEMARK            = 7,
 
407
    NAME_MANUFACTURER         = 8,
 
408
    NAME_DESIGNER             = 9,
 
409
    NAME_DESCRIPTION          = 10,
 
410
    NAME_VENDOR_URL           = 11,
 
411
    NAME_DESIGNER_URL         = 12,
 
412
    NAME_LICENSE_DESCRIPTION  = 13,
 
413
    NAME_LICENSE_URL          = 14,
 
414
    NAME_RESERVED             = 15,
 
415
    NAME_PREFERRED_FAMILY     = 16,
 
416
    NAME_PREFERRED_SUB_FAMILY = 17,
 
417
    NAME_COMPATIBLE_FULL      = 18,
 
418
    NAME_SAMPLE_TEXT          = 19,
 
419
    NAME_POSTSCRIPT_CID       = 20
 
420
};
 
421
 
 
422
struct NameRecord
 
423
{
 
424
    le_uint16 platformID;
 
425
    le_uint16 encodingID;
 
426
    le_uint16 languageID;
 
427
    le_uint16 nameID;
 
428
    le_uint16 length;
 
429
    le_uint16 offset;
 
430
};
 
431
 
 
432
#ifndef __cplusplus
 
433
typedef struct NameRecord NameRecord;
 
434
#endif
 
435
 
 
436
struct NAMETable
 
437
{
 
438
    le_uint16 version;
 
439
    le_uint16 count;
 
440
    le_uint16 stringOffset;
 
441
    NameRecord nameRecords[ANY_NUMBER];
 
442
};
 
443
 
 
444
#ifndef __cplusplus
 
445
typedef struct NAMETable NAMETable;
 
446
#endif
 
447
 
 
448
#endif
 
449