Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
/*******************************************************************
2
 *
3
 *  tttables.h                                                  1.1
4
 *
5
 *    TrueType Tables structures and handling (specification).
6
 *
7
 *  Copyright 1996-1999 by
8
 *  David Turner, Robert Wilhelm, and Werner Lemberg.
9
 *
10
 *  This file is part of the FreeType project, and may only be used
11
 *  modified and distributed under the terms of the FreeType project
12
 *  license, LICENSE.TXT. By continuing to use, modify, or distribute
13
 *  this file you indicate that you have read the license and
14
 *  understand and accept it fully.
15
 *
16
 ******************************************************************/
17
 
18
#ifndef TTTABLES_H
19
#define TTTABLES_H
20
 
21
#include "ttconfig.h"
22
#include "tttypes.h"
23
 
24
#ifdef __cplusplus
25
  extern "C" {
26
#endif
27
 
28
  /***********************************************************************/
29
  /*                                                                     */
30
  /*                      TrueType Table Types                           */
31
  /*                                                                     */
32
  /***********************************************************************/
33
 
34
  /* TrueType Collection Header */
35
 
36
  struct  TTTCHeader_
37
  {
38
    ULong     Tag;
39
    TT_Fixed  version;
40
    ULong     DirCount;
41
    PULong    TableDirectory;
42
  };
43
 
44
  typedef struct TTTCHeader_  TTTCHeader;
45
  typedef TTTCHeader*         PTTCHeader;
46
 
47
 
48
  /* TrueType Table Directory type */
49
 
50
  struct  TTableDir_
51
  {
52
    TT_Fixed  version;      /* should be 0x10000 */
53
    UShort    numTables;    /* number of tables  */
54
 
55
    UShort  searchRange;    /* These parameters are only used  */
56
    UShort  entrySelector;  /* for a dichotomy search in the   */
57
    UShort  rangeShift;     /* directory. We ignore them.      */
58
  };
59
 
60
  typedef struct TTableDir_  TTableDir;
61
  typedef TTableDir*         PTableDir;
62
 
63
 
64
  /* The 'TableDir' is followed by 'numTables' TableDirEntries */
65
 
66
  struct  TTableDirEntry_
67
  {
68
    ULong  Tag;        /*        table type */
69
    ULong  CheckSum;   /*    table checksum */
70
    ULong  Offset;     /* table file offset */
71
    ULong  Length;     /*      table length */
72
  };
73
 
74
  typedef struct TTableDirEntry_  TTableDirEntry;
75
  typedef TTableDirEntry*         PTableDirEntry;
76
 
77
 
78
  /* 'cmap' tables */
79
 
80
  struct  TCMapDir_
81
  {
82
    UShort  tableVersionNumber;
83
    UShort  numCMaps;
84
  };
85
 
86
  typedef struct TCMapDir_  TCMapDir;
87
  typedef TCMapDir*         PCMapDir;
88
 
89
  struct  TCMapDirEntry_
90
  {
91
    UShort  platformID;
92
    UShort  platformEncodingID;
93
    Long    offset;
94
  };
95
 
96
  typedef struct TCMapDirEntry_  TCMapDirEntry;
97
  typedef TCMapDirEntry*         PCMapDirEntries;
98
 
99
 
100
  /* 'maxp' Maximum Profiles table */
101
 
102
  struct  TMaxProfile_
103
  {
104
    TT_Fixed  version;
105
    UShort    numGlyphs,
106
              maxPoints,
107
              maxContours,
108
              maxCompositePoints,
109
              maxCompositeContours,
110
              maxZones,
111
              maxTwilightPoints,
112
              maxStorage,
113
              maxFunctionDefs,
114
              maxInstructionDefs,
115
              maxStackElements,
116
              maxSizeOfInstructions,
117
              maxComponentElements,
118
              maxComponentDepth;
119
  };
120
 
121
  typedef struct TMaxProfile_  TMaxProfile;
122
  typedef TMaxProfile*         PMaxProfile;
123
 
124
 
125
  /* table "gasp" */
126
 
127
#define GASP_GRIDFIT  0x01
128
#define GASP_DOGRAY   0x02
129
 
130
  struct  GaspRange_
131
  {
132
    UShort  maxPPEM;
133
    UShort  gaspFlag;
134
  };
135
 
136
  typedef struct GaspRange_  GaspRange;
137
 
138
 
139
  struct  TGasp_
140
  {
141
    UShort      version;
142
    UShort      numRanges;
143
    GaspRange*  gaspRanges;
144
  };
145
 
146
  typedef struct TGasp_  TGasp;
147
 
148
 
149
  /* table "head" - now defined in freetype.h */
150
  /* table "hhea" - now defined in freetype.h */
151
 
152
 
153
  /* tables "HMTX" and "VMTX" */
154
 
155
  struct  TLongMetrics_
156
  {
157
    UShort  advance;
158
    Short   bearing;
159
  };
160
 
161
  typedef struct TLongMetrics_  TLongMetrics, *PLongMetrics;
162
 
163
  typedef Short  TShortMetrics, *PShortMetrics;
164
 
165
  /* 'loca' location table type */
166
 
167
  struct  TLoca_
168
  {
169
    UShort    Size;
170
    PStorage  Table;
171
  };
172
 
173
  typedef struct TLoca_  TLoca;
174
 
175
 
176
  /* table "name" */
177
 
178
  struct  TNameRec_
179
  {
180
    UShort  platformID;
181
    UShort  encodingID;
182
    UShort  languageID;
183
    UShort  nameID;
184
    UShort  stringLength;
185
    UShort  stringOffset;
186
 
187
    /* this last field is not defined in the spec */
188
    /* but used by the FreeType engine            */
189
 
190
    PByte   string;
191
  };
192
 
193
  typedef struct TNameRec_  TNameRec;
194
 
195
 
196
  struct  TName_Table_
197
  {
198
    UShort     format;
199
    UShort     numNameRecords;
200
    UShort     storageOffset;
201
    TNameRec*  names;
202
    PByte      storage;
203
  };
204
 
205
  typedef struct TName_Table_  TName_Table;
206
 
207
 
208
#ifdef __cplusplus
209
  }
210
#endif
211
 
212
#endif /* TTTABLES_H */
213
 
214
 
215
/* END */