root / trunk / tbeta / Linux / libs / freetype / include / freetype2 / freetype / ftgxval.h @ 164

View | Annotate | Download (12.3 KB)

1
/***************************************************************************/
2
/*                                                                         */
3
/*  ftgxval.h                                                              */
4
/*                                                                         */
5
/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
6
/*                                                                         */
7
/*  Copyright 2004, 2005, 2006 by                                          */
8
/*  Masatake YAMATO, Redhat K.K,                                           */
9
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
10
/*                                                                         */
11
/*  This file is part of the FreeType project, and may only be used,       */
12
/*  modified, and distributed under the terms of the FreeType project      */
13
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
14
/*  this file you indicate that you have read the license and              */
15
/*  understand and accept it fully.                                        */
16
/*                                                                         */
17
/***************************************************************************/
18
19
/***************************************************************************/
20
/*                                                                         */
21
/* gxvalid is derived from both gxlayout module and otvalid module.        */
22
/* Development of gxlayout is supported by the Information-technology      */
23
/* Promotion Agency(IPA), Japan.                                           */
24
/*                                                                         */
25
/***************************************************************************/
26
27
28
#ifndef __FTGXVAL_H__
29
#define __FTGXVAL_H__
30
31
#include <ft2build.h>
32
#include FT_FREETYPE_H
33
34
#ifdef FREETYPE_H
35
#error "freetype.h of FreeType 1 has been loaded!"
36
#error "Please fix the directory search order for header files"
37
#error "so that freetype.h of FreeType 2 is found first."
38
#endif
39
40
41
FT_BEGIN_HEADER
42
43
44
  /*************************************************************************/
45
  /*                                                                       */
46
  /* <Section>                                                             */
47
  /*    gx_validation                                                      */
48
  /*                                                                       */
49
  /* <Title>                                                               */
50
  /*    TrueTypeGX/AAT Validation                                          */
51
  /*                                                                       */
52
  /* <Abstract>                                                            */
53
  /*    An API to validate TrueTypeGX/AAT tables.                          */
54
  /*                                                                       */
55
  /* <Description>                                                         */
56
  /*    This section contains the declaration of functions to validate     */
57
  /*    some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,  */
58
  /*    trak, prop, lcar).                                                 */
59
  /*                                                                       */
60
  /*************************************************************************/
61
62
63
  /*************************************************************************/
64
  /*                                                                       */
65
  /*                                                                       */
66
  /* Warning: Use FT_VALIDATE_XXX to validate a table.                     */
67
  /*          Following definitions are for gxvalid developers.            */
68
  /*                                                                       */
69
  /*                                                                       */
70
  /*************************************************************************/
71
72
#define FT_VALIDATE_feat_INDEX     0
73
#define FT_VALIDATE_mort_INDEX     1
74
#define FT_VALIDATE_morx_INDEX     2
75
#define FT_VALIDATE_bsln_INDEX     3
76
#define FT_VALIDATE_just_INDEX     4
77
#define FT_VALIDATE_kern_INDEX     5
78
#define FT_VALIDATE_opbd_INDEX     6
79
#define FT_VALIDATE_trak_INDEX     7
80
#define FT_VALIDATE_prop_INDEX     8
81
#define FT_VALIDATE_lcar_INDEX     9
82
#define FT_VALIDATE_GX_LAST_INDEX  FT_VALIDATE_lcar_INDEX
83
84
85
  /*************************************************************************
86
   *
87
   * @macro:
88
   *   FT_VALIDATE_GX_LENGTH
89
   *
90
   * @description:
91
   *   The number of tables checked in this module.  Use it as a parameter
92
   *   for the `table-length' argument of function @FT_TrueTypeGX_Validate.
93
   */
94
#define FT_VALIDATE_GX_LENGTH     (FT_VALIDATE_GX_LAST_INDEX + 1)
95
96
  /* */
97
98
  /* Up to 0x1000 is used by otvalid.
99
     Ox2xxx is reserved for feature OT extension. */
100
#define FT_VALIDATE_GX_START 0x4000
101
#define FT_VALIDATE_GX_BITFIELD( tag )                  \
102
  ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
103
104
105
 /**********************************************************************
106
  *
107
  * @enum:
108
  *    FT_VALIDATE_GXXXX
109
  *
110
  * @description:
111
  *    A list of bit-field constants used with @FT_TrueTypeGX_Validate to
112
  *    indicate which TrueTypeGX/AAT Type tables should be validated.
113
  *
114
  * @values:
115
  *    FT_VALIDATE_feat ::
116
  *      Validate `feat' table.
117
  *
118
  *    FT_VALIDATE_mort ::
119
  *      Validate `mort' table.
120
  *
121
  *    FT_VALIDATE_morx ::
122
  *      Validate `morx' table.
123
  *
124
  *    FT_VALIDATE_bsln ::
125
  *      Validate `bsln' table.
126
  *
127
  *    FT_VALIDATE_just ::
128
  *      Validate `just' table.
129
  *
130
  *    FT_VALIDATE_kern ::
131
  *      Validate `kern' table.
132
  *
133
  *    FT_VALIDATE_opbd ::
134
  *      Validate `opbd' table.
135
  *
136
  *    FT_VALIDATE_trak ::
137
  *      Validate `trak' table.
138
  *
139
  *    FT_VALIDATE_prop ::
140
  *      Validate `prop' table.
141
  *
142
  *    FT_VALIDATE_lcar ::
143
  *      Validate `lcar' table.
144
  *
145
  *    FT_VALIDATE_GX ::
146
  *      Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
147
  *      opbd, trak, prop and lcar).
148
  *
149
  */
150
151
#define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
152
#define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
153
#define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD( morx )
154
#define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD( bsln )
155
#define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD( just )
156
#define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD( kern )
157
#define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD( opbd )
158
#define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD( trak )
159
#define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD( prop )
160
#define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD( lcar )
161
162
#define FT_VALIDATE_GX  ( FT_VALIDATE_feat | \
163
                          FT_VALIDATE_mort | \
164
                          FT_VALIDATE_morx | \
165
                          FT_VALIDATE_bsln | \
166
                          FT_VALIDATE_just | \
167
                          FT_VALIDATE_kern | \
168
                          FT_VALIDATE_opbd | \
169
                          FT_VALIDATE_trak | \
170
                          FT_VALIDATE_prop | \
171
                          FT_VALIDATE_lcar )
172
173
174
  /* */
175
176
 /**********************************************************************
177
  *
178
  * @function:
179
  *    FT_TrueTypeGX_Validate
180
  *
181
  * @description:
182
  *    Validate various TrueTypeGX tables to assure that all offsets and
183
  *    indices are valid.  The idea is that a higher-level library which
184
  *    actually does the text layout can access those tables without
185
  *    error checking (which can be quite time consuming).
186
  *
187
  * @input:
188
  *    face ::
189
  *       A handle to the input face.
190
  *
191
  *    validation_flags ::
192
  *       A bit field which specifies the tables to be validated.  See
193
  *       @FT_VALIDATE_GXXXX for possible values.
194
  *
195
  *    table_length ::
196
  *       The size of the `tables' array.  Normally, @FT_VALIDATE_GX_LENGTH
197
  *       should be passed.
198
  *
199
  * @output:
200
  *    tables ::
201
  *       The array where all validated sfnt tables are stored.
202
  *       The array itself must be allocated by a client.
203
  *
204
  * @return:
205
  *   FreeType error code.  0 means success.
206
  *
207
  * @note:
208
  *   This function only works with TrueTypeGX fonts, returning an error
209
  *   otherwise.
210
  *
211
  *   After use, the application should deallocate the buffers pointed to by
212
  *   each `tables' element, by calling @FT_TrueTypeGX_Free.  A NULL value
213
  *   indicates that the table either doesn't exist in the font, the
214
  *   application hasn't asked for validation, or the validator doesn't have
215
  *   the ability to validate the sfnt table.
216
  */
217
  FT_EXPORT( FT_Error )
218
  FT_TrueTypeGX_Validate( FT_Face   face,
219
                          FT_UInt   validation_flags,
220
                          FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
221
                          FT_UInt   table_length );
222
223
224
  /* */
225
226
 /**********************************************************************
227
  *
228
  * @function:
229
  *    FT_TrueTypeGX_Free
230
  *
231
  * @description:
232
  *    Free the buffer allocated by TrueTypeGX validator.
233
  *
234
  * @input:
235
  *    face ::
236
  *       A handle to the input face.
237
  *
238
  *    table ::
239
  *       The pointer to the buffer allocated by
240
  *       @FT_TrueTypeGX_Validate.
241
  *
242
  * @note:
243
  *   This function must be used to free the buffer allocated by
244
  *   @FT_TrueTypeGX_Validate only.
245
  */
246
  FT_EXPORT( void )
247
  FT_TrueTypeGX_Free( FT_Face   face,
248
                      FT_Bytes  table );
249
250
251
  /* */
252
253
 /**********************************************************************
254
  *
255
  * @enum:
256
  *    FT_VALIDATE_CKERNXXX
257
  *
258
  * @description:
259
  *    A list of bit-field constants used with @FT_ClassicKern_Validate
260
  *    to indicate the classic kern dialect or dialects.  If the selected
261
  *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
262
  *    invalid.
263
  *
264
  * @values:
265
  *    FT_VALIDATE_MS ::
266
  *      Handle the `kern' table as a classic Microsoft kern table.
267
  *
268
  *    FT_VALIDATE_APPLE ::
269
  *      Handle the `kern' table as a classic Apple kern table.
270
  *
271
  *    FT_VALIDATE_CKERN ::
272
  *      Handle the `kern' as either classic Apple or Microsoft kern table.
273
  */
274
#define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
275
#define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
276
277
#define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
278
279
280
  /* */
281
282
 /**********************************************************************
283
  *
284
  * @function:
285
  *    FT_ClassicKern_Validate
286
  *
287
  * @description:
288
  *    Validate classic (16bit format) kern table to assure that the offsets
289
  *    and indices are valid.  The idea is that a higher-level library which
290
  *    actually does the text layout can access those tables without error
291
  *    checking (which can be quite time consuming).
292
  *
293
  *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
294
  *    the new 32bit format and the classic 16bit format, while
295
  *    FT_ClassicKern_Validate only supports the classic 16bit format.
296
  *
297
  * @input:
298
  *    face ::
299
  *       A handle to the input face.
300
  *
301
  *    validation_flags ::
302
  *       A bit field which specifies the dialect to be validated.  See
303
  *       @FT_VALIDATE_CKERNXXX for possible values.
304
  *
305
  * @output:
306
  *    ckern_table ::
307
  *       A pointer to the kern table.
308
  *
309
  * @return:
310
  *   FreeType error code.  0 means success.
311
  *
312
  * @note:
313
  *   After use, the application should deallocate the buffers pointed to by
314
  *   `ckern_table', by calling @FT_ClassicKern_Free.  A NULL value
315
  *   indicates that the table doesn't exist in the font.
316
  */
317
  FT_EXPORT( FT_Error )
318
  FT_ClassicKern_Validate( FT_Face    face,
319
                           FT_UInt    validation_flags,
320
                           FT_Bytes  *ckern_table );
321
322
323
  /* */
324
325
 /**********************************************************************
326
  *
327
  * @function:
328
  *    FT_ClassicKern_Free
329
  *
330
  * @description:
331
  *    Free the buffer allocated by classic Kern validator.
332
  *
333
  * @input:
334
  *    face ::
335
  *       A handle to the input face.
336
  *
337
  *    table ::
338
  *       The pointer to the buffer that is allocated by
339
  *       @FT_ClassicKern_Validate.
340
  *
341
  * @note:
342
  *   This function must be used to free the buffer allocated by
343
  *   @FT_ClassicKern_Validate only.
344
  */
345
  FT_EXPORT( void )
346
  FT_ClassicKern_Free( FT_Face   face,
347
                       FT_Bytes  table );
348
349
350
 /* */
351
352
353
FT_END_HEADER
354
355
#endif /* __FTGXVAL_H__ */
356
357
358
/* END */