1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftgxval.h                                                              */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease/*  Copyright 2004-2006, 2013 by                                           */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  Masatake YAMATO, Redhat K.K,                                           */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* gxvalid is derived from both gxlayout module and otvalid module.        */
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Development of gxlayout is supported by the Information-technology      */
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Promotion Agency(IPA), Japan.                                           */
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTGXVAL_H__
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTGXVAL_H__
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!"
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files"
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first."
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Section>                                                             */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    gx_validation                                                      */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Title>                                                               */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    TrueTypeGX/AAT Validation                                          */
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Abstract>                                                            */
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    An API to validate TrueTypeGX/AAT tables.                          */
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This section contains the declaration of functions to validate     */
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd,  */
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    trak, prop, lcar).                                                 */
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Warning: Use FT_VALIDATE_XXX to validate a table.                     */
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*          Following definitions are for gxvalid developers.            */
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_feat_INDEX     0
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_mort_INDEX     1
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_morx_INDEX     2
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_bsln_INDEX     3
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_just_INDEX     4
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_kern_INDEX     5
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_opbd_INDEX     6
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_trak_INDEX     7
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_prop_INDEX     8
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_lcar_INDEX     9
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_LAST_INDEX  FT_VALIDATE_lcar_INDEX
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @macro:
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_VALIDATE_GX_LENGTH
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The number of tables checked in this module.  Use it as a parameter
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   for the `table-length' argument of function @FT_TrueTypeGX_Validate.
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_LENGTH     (FT_VALIDATE_GX_LAST_INDEX + 1)
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Up to 0x1000 is used by otvalid.
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project     Ox2xxx is reserved for feature OT extension. */
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_START 0x4000
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX_BITFIELD( tag )                  \
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @enum:
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_GXXXX
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    A list of bit-field constants used with @FT_TrueTypeGX_Validate to
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    indicate which TrueTypeGX/AAT Type tables should be validated.
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @values:
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_feat ::
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `feat' table.
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_mort ::
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `mort' table.
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_morx ::
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `morx' table.
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_bsln ::
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `bsln' table.
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_just ::
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `just' table.
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_kern ::
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `kern' table.
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_opbd ::
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `opbd' table.
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_trak ::
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `trak' table.
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_prop ::
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `prop' table.
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_lcar ::
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate `lcar' table.
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_GX ::
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      opbd, trak, prop and lcar).
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_feat  FT_VALIDATE_GX_BITFIELD( feat )
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_mort  FT_VALIDATE_GX_BITFIELD( mort )
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_morx  FT_VALIDATE_GX_BITFIELD( morx )
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_bsln  FT_VALIDATE_GX_BITFIELD( bsln )
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_just  FT_VALIDATE_GX_BITFIELD( just )
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_kern  FT_VALIDATE_GX_BITFIELD( kern )
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_opbd  FT_VALIDATE_GX_BITFIELD( opbd )
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_trak  FT_VALIDATE_GX_BITFIELD( trak )
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_prop  FT_VALIDATE_GX_BITFIELD( prop )
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_lcar  FT_VALIDATE_GX_BITFIELD( lcar )
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_GX  ( FT_VALIDATE_feat | \
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_mort | \
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_morx | \
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_bsln | \
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_just | \
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_kern | \
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_opbd | \
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_trak | \
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_prop | \
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_VALIDATE_lcar )
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_TrueTypeGX_Validate
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Validate various TrueTypeGX tables to assure that all offsets and
183ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease  *    indices are valid.  The idea is that a higher-level library that
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    actually does the text layout can access those tables without
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    error checking (which can be quite time consuming).
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face ::
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       A handle to the input face.
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    validation_flags ::
192ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease  *       A bit field that specifies the tables to be validated.  See
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       @FT_VALIDATE_GXXXX for possible values.
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    table_length ::
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       The size of the `tables' array.  Normally, @FT_VALIDATE_GX_LENGTH
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       should be passed.
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @output:
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    tables ::
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       The array where all validated sfnt tables are stored.
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       The array itself must be allocated by a client.
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @return:
2050a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   FreeType error code.  0~means success.
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   This function only works with TrueTypeGX fonts, returning an error
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   otherwise.
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   After use, the application should deallocate the buffers pointed to by
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   each `tables' element, by calling @FT_TrueTypeGX_Free.  A NULL value
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   indicates that the table either doesn't exist in the font, the
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   application hasn't asked for validation, or the validator doesn't have
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   the ability to validate the sfnt table.
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_TrueTypeGX_Validate( FT_Face   face,
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_UInt   validation_flags,
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_Bytes  tables[FT_VALIDATE_GX_LENGTH],
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                          FT_UInt   table_length );
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_TrueTypeGX_Free
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Free the buffer allocated by TrueTypeGX validator.
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face ::
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       A handle to the input face.
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    table ::
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       The pointer to the buffer allocated by
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       @FT_TrueTypeGX_Validate.
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   This function must be used to free the buffer allocated by
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   @FT_TrueTypeGX_Validate only.
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_TrueTypeGX_Free( FT_Face   face,
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      FT_Bytes  table );
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @enum:
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_CKERNXXX
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    A list of bit-field constants used with @FT_ClassicKern_Validate
260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    to indicate the classic kern dialect or dialects.  If the selected
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    type doesn't fit, @FT_ClassicKern_Validate regards the table as
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    invalid.
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @values:
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_MS ::
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Handle the `kern' table as a classic Microsoft kern table.
267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_APPLE ::
269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Handle the `kern' table as a classic Apple kern table.
270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_VALIDATE_CKERN ::
272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *      Handle the `kern' as either classic Apple or Microsoft kern table.
273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_MS     ( FT_VALIDATE_GX_START << 0 )
275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_APPLE  ( FT_VALIDATE_GX_START << 1 )
276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_VALIDATE_CKERN  ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_ClassicKern_Validate
286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
2880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    Validate classic (16-bit format) kern table to assure that the offsets
289ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease  *    and indices are valid.  The idea is that a higher-level library that
290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    actually does the text layout can access those tables without error
291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    checking (which can be quite time consuming).
292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
2940a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    the new 32-bit format and the classic 16-bit format, while
2950a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *    FT_ClassicKern_Validate only supports the classic 16-bit format.
296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face ::
299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       A handle to the input face.
300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    validation_flags ::
302ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease  *       A bit field that specifies the dialect to be validated.  See
303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       @FT_VALIDATE_CKERNXXX for possible values.
304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @output:
306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    ckern_table ::
307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       A pointer to the kern table.
308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @return:
3100a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project  *   FreeType error code.  0~means success.
311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   After use, the application should deallocate the buffers pointed to by
314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   `ckern_table', by calling @FT_ClassicKern_Free.  A NULL value
315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   indicates that the table doesn't exist in the font.
316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( FT_Error )
318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_ClassicKern_Validate( FT_Face    face,
319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_UInt    validation_flags,
320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                           FT_Bytes  *ckern_table );
321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /**********************************************************************
326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @function:
328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    FT_ClassicKern_Free
329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @description:
331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    Free the buffer allocated by classic Kern validator.
332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @input:
334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    face ::
335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       A handle to the input face.
336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *    table ::
338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       The pointer to the buffer that is allocated by
339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *       @FT_ClassicKern_Validate.
340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *
341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  * @note:
342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   This function must be used to free the buffer allocated by
343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  *   @FT_ClassicKern_Validate only.
344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  */
345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_EXPORT( void )
346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_ClassicKern_Free( FT_Face   face,
347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                       FT_Bytes  table );
348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */
351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTGXVAL_H__ */
356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
359