Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* Copyright (C) 2003 Aladdin Enterprises.  All rights reserved.
2
 
3
  This software is provided AS-IS with no warranty, either express or
4
  implied.
5
 
6
  This software is distributed under license and may not be copied,
7
  modified or distributed except as expressly authorized under the terms
8
  of the license contained in the file LICENSE in this distribution.
9
 
10
  For more information about licensing, please refer to
11
  http://www.ghostscript.com/licensing/. For information on
12
  commercial licensing, go to http://www.artifex.com/licensing/ or
13
  contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14
  San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
*/
16
 
17
/* $Id: tttables.h,v 1.2 2003/11/21 20:01:22 giles Exp $ */
18
 
19
/* Changes after FreeType: cut out the TrueType instruction interpreter. */
20
 
21
 
22
/*******************************************************************
23
 *
24
 *  tttables.h                                                  1.1
25
 *
26
 *    TrueType Tables structures and handling (specification).
27
 *
28
 *  Copyright 1996-1998 by
29
 *  David Turner, Robert Wilhelm, and Werner Lemberg.
30
 *
31
 *  This file is part of the FreeType project, and may only be used
32
 *  modified and distributed under the terms of the FreeType project
33
 *  license, LICENSE.TXT. By continuing to use, modify, or distribute
34
 *  this file you indicate that you have read the license and
35
 *  understand and accept it fully.
36
 *
37
 ******************************************************************/
38
 
39
#ifndef TTTABLES_H
40
#define TTTABLES_H
41
 
42
#include "tttypes.h"
43
 
44
#ifdef __cplusplus
45
  extern "C" {
46
#endif
47
 
48
  /***********************************************************************/
49
  /*                                                                     */
50
  /*                      TrueType Table Types                           */
51
  /*                                                                     */
52
  /***********************************************************************/
53
 
54
  /* TrueType Collection Header */
55
 
56
  struct  _TTTCHeader
57
  {
58
    Long      Tag;
59
    TT_Fixed  version;
60
    ULong     DirCount;
61
    PULong    TableDirectory;
62
  };
63
 
64
  typedef struct _TTTCHeader  TTTCHeader;
65
  typedef TTTCHeader*         PTTCHeader;
66
 
67
 
68
  /* TrueType Table Directory type */
69
 
70
  struct  _TTableDir
71
  {
72
    TT_Fixed  version;      /* should be 0x10000 */
73
    UShort    numTables;    /* number of tables  */
74
 
75
    UShort  searchRange;    /* These parameters are only used  */
76
    UShort  entrySelector;  /* for a dichotomy search in the   */
77
    UShort  rangeShift;     /* directory. We ignore them.      */
78
  };
79
 
80
  typedef struct _TTableDir  TTableDir;
81
  typedef TTableDir*         PTableDir;
82
 
83
 
84
  /* The 'TableDir' is followed by 'numTables' TableDirEntries */
85
 
86
  struct  _TTableDirEntry
87
  {
88
    Long  Tag;        /*        table type */
89
    Long  CheckSum;   /*    table checksum */
90
    Long  Offset;     /* table file offset */
91
    Long  Length;     /*      table length */
92
  };
93
 
94
  typedef struct _TTableDirEntry  TTableDirEntry;
95
  typedef TTableDirEntry*         PTableDirEntry;
96
 
97
 
98
  /* 'cmap' tables */
99
 
100
  struct  _TCMapDir
101
  {
102
    UShort  tableVersionNumber;
103
    UShort  numCMaps;
104
  };
105
 
106
  typedef struct _TCMapDir  TCMapDir;
107
  typedef TCMapDir*         PCMapDir;
108
 
109
  struct  _TCMapDirEntry
110
  {
111
    UShort  platformID;
112
    UShort  platformEncodingID;
113
    Long    offset;
114
  };
115
 
116
  typedef struct _TCMapDirEntry  TCMapDirEntry;
117
  typedef TCMapDirEntry*         PCMapDirEntries;
118
 
119
 
120
  /* 'maxp' Maximum Profiles table */
121
 
122
  struct  _TMaxProfile
123
  {
124
    TT_Fixed  version;
125
    UShort    numGlyphs,
126
              maxPoints,
127
              maxContours,
128
              maxCompositePoints,
129
              maxCompositeContours,
130
              maxZones,
131
              maxTwilightPoints,
132
              maxStorage,
133
              maxFunctionDefs,
134
              maxInstructionDefs,
135
              maxStackElements,
136
              maxSizeOfInstructions,
137
              maxComponentElements,
138
              maxComponentDepth;
139
  };
140
 
141
  typedef struct _TMaxProfile  TMaxProfile;
142
  typedef TMaxProfile*         PMaxProfile;
143
 
144
 
145
  /* table "gasp" */
146
 
147
#  define GASP_GRIDFIT  0x01
148
#  define GASP_DOGRAY   0x02
149
 
150
  struct  _GaspRange
151
  {
152
    UShort  maxPPEM;
153
    UShort  gaspFlag;
154
  };
155
 
156
  typedef struct _GaspRange  GaspRange;
157
 
158
 
159
  struct  _TGasp
160
  {
161
    UShort      version;
162
    UShort      numRanges;
163
    GaspRange*  gaspRanges;
164
  };
165
 
166
  typedef struct _TGasp  TGasp;
167
 
168
 
169
  /* table "head" - now defined in freetype.h */
170
  /* table "hhea" - now defined in freetype.h */
171
 
172
 
173
  /* table "HMTX" */
174
 
175
  struct  _TLongHorMetric
176
  {
177
    UShort  advance_Width;
178
    Short   lsb;
179
  };
180
 
181
  typedef struct _TLongHorMetric  TLongHorMetric;
182
  typedef TLongHorMetric*         PTableHorMetrics;
183
 
184
 
185
  /* 'OS/2' table - now defined in freetype.h */
186
  /* "post" table - now defined in freetype.h */
187
 
188
 
189
  /* 'loca' location table type */
190
 
191
  struct  _TLoca
192
  {
193
    UShort    Size;
194
    PStorage  Table;
195
  };
196
 
197
  typedef struct _TLoca  TLoca;
198
 
199
 
200
  /* table "name" */
201
 
202
  struct  _TNameRec
203
  {
204
    UShort  platformID;
205
    UShort  encodingID;
206
    UShort  languageID;
207
    UShort  nameID;
208
    UShort  stringLength;
209
    UShort  stringOffset;
210
 
211
    /* this last field is not defined in the spec */
212
    /* but used by the FreeType engine            */
213
 
214
    PByte   string;
215
  };
216
 
217
  typedef struct _TNameRec  TNameRec;
218
 
219
 
220
  struct  _TName_Table
221
  {
222
    UShort     format;
223
    UShort     numNameRecords;
224
    UShort     storageOffset;
225
    TNameRec*  names;
226
    PByte      storage;
227
  };
228
 
229
  typedef struct _TName_Table  TName_Table;
230
 
231
 
232
#ifdef __cplusplus
233
  }
234
#endif
235
 
236
#endif /* TTTABLES_H */
237
 
238
 
239
/* END */