os/textandloc/fontservices/textshaperplugin/test/letest/sfnt.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/***************************************************************************
sl@0
     2
*
sl@0
     3
*   Copyright (C) 1998-2002, International Business Machines
sl@0
     4
*   Corporation and others.  All Rights Reserved.
sl@0
     5
*
sl@0
     6
************************************************************************/
sl@0
     7
sl@0
     8
#ifndef __SFNT_H
sl@0
     9
#define __SFNT_H
sl@0
    10
sl@0
    11
#include "LETypes.h"
sl@0
    12
sl@0
    13
sl@0
    14
#ifndef ANY_NUMBER
sl@0
    15
#define ANY_NUMBER 1
sl@0
    16
#endif
sl@0
    17
sl@0
    18
struct DirectoryEntry
sl@0
    19
{
sl@0
    20
    le_uint32   tag;
sl@0
    21
    le_uint32   checksum;
sl@0
    22
    le_uint32   offset;
sl@0
    23
    le_uint32   length;
sl@0
    24
};
sl@0
    25
sl@0
    26
struct SFNTDirectory
sl@0
    27
{
sl@0
    28
    le_uint32       scalerType;
sl@0
    29
    le_uint16       numTables;
sl@0
    30
    le_uint16       searchRange;
sl@0
    31
    le_uint16       entrySelector;
sl@0
    32
    le_uint16       rangeShift;
sl@0
    33
    DirectoryEntry  tableDirectory[ANY_NUMBER];
sl@0
    34
};
sl@0
    35
sl@0
    36
sl@0
    37
struct CMAPEncodingSubtableHeader
sl@0
    38
{
sl@0
    39
    le_uint16   platformID;
sl@0
    40
    le_uint16   platformSpecificID;
sl@0
    41
    le_uint32   encodingOffset;
sl@0
    42
};
sl@0
    43
sl@0
    44
struct CMAPTable
sl@0
    45
{
sl@0
    46
    le_uint16   version;
sl@0
    47
    le_uint16   numberSubtables;
sl@0
    48
    CMAPEncodingSubtableHeader encodingSubtableHeaders[ANY_NUMBER];
sl@0
    49
};
sl@0
    50
sl@0
    51
struct CMAPEncodingSubtable
sl@0
    52
{
sl@0
    53
    le_uint16   format;
sl@0
    54
    le_uint16   length;
sl@0
    55
    le_uint16   language;
sl@0
    56
};
sl@0
    57
sl@0
    58
struct CMAPFormat0Encoding : CMAPEncodingSubtable
sl@0
    59
{
sl@0
    60
    le_uint8    glyphIndexArray[256];
sl@0
    61
};
sl@0
    62
sl@0
    63
struct CMAPFormat2Subheader
sl@0
    64
{
sl@0
    65
    le_uint16   firstCode;
sl@0
    66
    le_uint16   entryCount;
sl@0
    67
    le_int16    idDelta;
sl@0
    68
    le_uint16   idRangeOffset;
sl@0
    69
};
sl@0
    70
sl@0
    71
struct CMAPFormat2Encoding : CMAPEncodingSubtable
sl@0
    72
{
sl@0
    73
    le_uint16  subHeadKeys[256];
sl@0
    74
    CMAPFormat2Subheader subheaders[ANY_NUMBER];
sl@0
    75
};
sl@0
    76
sl@0
    77
struct CMAPFormat4Encoding : CMAPEncodingSubtable
sl@0
    78
{
sl@0
    79
    le_uint16   segCountX2;
sl@0
    80
    le_uint16   searchRange;
sl@0
    81
    le_uint16   entrySelector;
sl@0
    82
    le_uint16   rangeShift;
sl@0
    83
    le_uint16   endCodes[ANY_NUMBER];
sl@0
    84
//  le_uint16   reservedPad;
sl@0
    85
//  le_uint16   startCodes[ANY_NUMBER];
sl@0
    86
//  le_uint16   idDelta[ANY_NUMBER];
sl@0
    87
//  le_uint16   idRangeOffset[ANY_NUMBER];
sl@0
    88
//  le_uint16   glyphIndexArray[ANY_NUMBER];
sl@0
    89
};
sl@0
    90
sl@0
    91
struct CMAPFormat6Encoding : CMAPEncodingSubtable
sl@0
    92
{
sl@0
    93
    le_uint16   firstCode;
sl@0
    94
    le_uint16   entryCount;
sl@0
    95
    le_uint16   glyphIndexArray[ANY_NUMBER];
sl@0
    96
};
sl@0
    97
sl@0
    98
struct CMAPEncodingSubtable32
sl@0
    99
{
sl@0
   100
    le_uint32   format;
sl@0
   101
    le_uint32   length;
sl@0
   102
    le_uint32   language;
sl@0
   103
};
sl@0
   104
sl@0
   105
struct CMAPGroup
sl@0
   106
{
sl@0
   107
    le_uint32   startCharCode;
sl@0
   108
    le_uint32   endCharCode;
sl@0
   109
    le_uint32   startGlyphCode;
sl@0
   110
};
sl@0
   111
sl@0
   112
struct CMAPFormat8Encoding : CMAPEncodingSubtable32
sl@0
   113
{
sl@0
   114
    le_uint32   is32[65536/32];
sl@0
   115
    le_uint32   nGroups;
sl@0
   116
    CMAPGroup   groups[ANY_NUMBER];
sl@0
   117
};
sl@0
   118
sl@0
   119
struct CMAPFormat10Encoding : CMAPEncodingSubtable32
sl@0
   120
{
sl@0
   121
    le_uint32   startCharCode;
sl@0
   122
    le_uint32   numCharCodes;
sl@0
   123
    le_uint16   glyphs[ANY_NUMBER];
sl@0
   124
};
sl@0
   125
sl@0
   126
struct CMAPFormat12Encoding : CMAPEncodingSubtable32
sl@0
   127
{
sl@0
   128
    le_uint32   nGroups;
sl@0
   129
    CMAPGroup   groups[ANY_NUMBER];
sl@0
   130
};
sl@0
   131
sl@0
   132
typedef le_int32 fixed;
sl@0
   133
sl@0
   134
struct BigDate
sl@0
   135
{
sl@0
   136
    le_uint32   bc;
sl@0
   137
    le_uint32   ad;
sl@0
   138
};
sl@0
   139
sl@0
   140
struct HEADTable
sl@0
   141
{
sl@0
   142
    fixed       version;
sl@0
   143
    fixed       fontRevision;
sl@0
   144
    le_uint32   checksumAdjustment;
sl@0
   145
    le_uint32   magicNumber;
sl@0
   146
    le_uint16   flags;
sl@0
   147
    le_uint16   unitsPerEm;
sl@0
   148
    BigDate     created;
sl@0
   149
    BigDate     modified;
sl@0
   150
    le_int16    xMin;
sl@0
   151
    le_int16    yMin;
sl@0
   152
    le_int16    xMax;
sl@0
   153
    le_int16    yMax;
sl@0
   154
    le_int16    lowestRecPPEM;
sl@0
   155
    le_int16    fontDirectionHint;
sl@0
   156
    le_int16    indexToLocFormat;
sl@0
   157
    le_int16    glyphDataFormat;
sl@0
   158
};
sl@0
   159
sl@0
   160
struct MAXPTable
sl@0
   161
{
sl@0
   162
    fixed       version;
sl@0
   163
    le_uint16   numGlyphs;
sl@0
   164
    le_uint16   maxPoints;
sl@0
   165
    le_uint16   maxContours;
sl@0
   166
    le_uint16   maxComponentPoints;
sl@0
   167
    le_uint16   maxComponentContours;
sl@0
   168
    le_uint16   maxZones;
sl@0
   169
    le_uint16   maxTwilightPoints;
sl@0
   170
    le_uint16   maxStorage;
sl@0
   171
    le_uint16   maxFunctionDefs;
sl@0
   172
    le_uint16   maxInstructionDefs;
sl@0
   173
    le_uint16   maxStackElements;
sl@0
   174
    le_uint16   maxSizeOfInstructions;
sl@0
   175
    le_uint16   maxComponentElements;
sl@0
   176
    le_uint16   maxComponentDepth;
sl@0
   177
};
sl@0
   178
sl@0
   179
struct HHEATable
sl@0
   180
{
sl@0
   181
    fixed       version;
sl@0
   182
    le_int16    ascent;
sl@0
   183
    le_int16    descent;
sl@0
   184
    le_int16    lineGap;
sl@0
   185
    le_uint16   advanceWidthMax;
sl@0
   186
    le_int16    minLeftSideBearing;
sl@0
   187
    le_int16    minRightSideBearing;
sl@0
   188
    le_int16    xMaxExtent;
sl@0
   189
    le_int16    caretSlopeRise;
sl@0
   190
    le_int16    caretSlopeRun;
sl@0
   191
    le_int16    caretOffset;
sl@0
   192
    le_int16    reserved1;
sl@0
   193
    le_int16    reserved2;
sl@0
   194
    le_int16    reserved3;
sl@0
   195
    le_int16    reserved4;
sl@0
   196
    le_int16    metricDataFormat;
sl@0
   197
    le_uint16   numOfLongHorMetrics;
sl@0
   198
};
sl@0
   199
sl@0
   200
struct LongHorMetric
sl@0
   201
{
sl@0
   202
    le_uint16   advanceWidth;
sl@0
   203
    le_int16    leftSideBearing;
sl@0
   204
};
sl@0
   205
sl@0
   206
struct HMTXTable
sl@0
   207
{
sl@0
   208
    LongHorMetric hMetrics[ANY_NUMBER];        // ANY_NUMBER = numOfLongHorMetrics from hhea table
sl@0
   209
//  le_int16        leftSideBearing[ANY_NUMBER]; // ANY_NUMBER = numGlyphs - numOfLongHorMetrics
sl@0
   210
};
sl@0
   211
sl@0
   212
#endif
sl@0
   213