ReactOS  0.4.15-dev-2528-g5506091
ftotval.h
Go to the documentation of this file.
1 /***************************************************************************/
2 /* */
3 /* ftotval.h */
4 /* */
5 /* FreeType API for validating OpenType tables (specification). */
6 /* */
7 /* Copyright 2004-2018 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 
19 /***************************************************************************/
20 /* */
21 /* */
22 /* Warning: This module might be moved to a different library in the */
23 /* future to avoid a tight dependency between FreeType and the */
24 /* OpenType specification. */
25 /* */
26 /* */
27 /***************************************************************************/
28 
29 
30 #ifndef FTOTVAL_H_
31 #define FTOTVAL_H_
32 
33 #include <ft2build.h>
34 #include FT_FREETYPE_H
35 
36 #ifdef FREETYPE_H
37 #error "freetype.h of FreeType 1 has been loaded!"
38 #error "Please fix the directory search order for header files"
39 #error "so that freetype.h of FreeType 2 is found first."
40 #endif
41 
42 
44 
45 
46  /*************************************************************************/
47  /* */
48  /* <Section> */
49  /* ot_validation */
50  /* */
51  /* <Title> */
52  /* OpenType Validation */
53  /* */
54  /* <Abstract> */
55  /* An API to validate OpenType tables. */
56  /* */
57  /* <Description> */
58  /* This section contains the declaration of functions to validate */
59  /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */
60  /* */
61  /* <Order> */
62  /* FT_OpenType_Validate */
63  /* FT_OpenType_Free */
64  /* */
65  /* FT_VALIDATE_OTXXX */
66  /* */
67  /*************************************************************************/
68 
69 
70  /**********************************************************************
71  *
72  * @enum:
73  * FT_VALIDATE_OTXXX
74  *
75  * @description:
76  * A list of bit-field constants used with @FT_OpenType_Validate to
77  * indicate which OpenType tables should be validated.
78  *
79  * @values:
80  * FT_VALIDATE_BASE ::
81  * Validate BASE table.
82  *
83  * FT_VALIDATE_GDEF ::
84  * Validate GDEF table.
85  *
86  * FT_VALIDATE_GPOS ::
87  * Validate GPOS table.
88  *
89  * FT_VALIDATE_GSUB ::
90  * Validate GSUB table.
91  *
92  * FT_VALIDATE_JSTF ::
93  * Validate JSTF table.
94  *
95  * FT_VALIDATE_MATH ::
96  * Validate MATH table.
97  *
98  * FT_VALIDATE_OT ::
99  * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
100  *
101  */
102 #define FT_VALIDATE_BASE 0x0100
103 #define FT_VALIDATE_GDEF 0x0200
104 #define FT_VALIDATE_GPOS 0x0400
105 #define FT_VALIDATE_GSUB 0x0800
106 #define FT_VALIDATE_JSTF 0x1000
107 #define FT_VALIDATE_MATH 0x2000
108 
109 #define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \
110  FT_VALIDATE_GDEF | \
111  FT_VALIDATE_GPOS | \
112  FT_VALIDATE_GSUB | \
113  FT_VALIDATE_JSTF | \
114  FT_VALIDATE_MATH )
115 
116  /**********************************************************************
117  *
118  * @function:
119  * FT_OpenType_Validate
120  *
121  * @description:
122  * Validate various OpenType tables to assure that all offsets and
123  * indices are valid. The idea is that a higher-level library that
124  * actually does the text layout can access those tables without
125  * error checking (which can be quite time consuming).
126  *
127  * @input:
128  * face ::
129  * A handle to the input face.
130  *
131  * validation_flags ::
132  * A bit field that specifies the tables to be validated. See
133  * @FT_VALIDATE_OTXXX for possible values.
134  *
135  * @output:
136  * BASE_table ::
137  * A pointer to the BASE table.
138  *
139  * GDEF_table ::
140  * A pointer to the GDEF table.
141  *
142  * GPOS_table ::
143  * A pointer to the GPOS table.
144  *
145  * GSUB_table ::
146  * A pointer to the GSUB table.
147  *
148  * JSTF_table ::
149  * A pointer to the JSTF table.
150  *
151  * @return:
152  * FreeType error code. 0~means success.
153  *
154  * @note:
155  * This function only works with OpenType fonts, returning an error
156  * otherwise.
157  *
158  * After use, the application should deallocate the five tables with
159  * @FT_OpenType_Free. A NULL value indicates that the table either
160  * doesn't exist in the font, or the application hasn't asked for
161  * validation.
162  */
165  FT_UInt validation_flags,
166  FT_Bytes *BASE_table,
167  FT_Bytes *GDEF_table,
168  FT_Bytes *GPOS_table,
169  FT_Bytes *GSUB_table,
170  FT_Bytes *JSTF_table );
171 
172  /**********************************************************************
173  *
174  * @function:
175  * FT_OpenType_Free
176  *
177  * @description:
178  * Free the buffer allocated by OpenType validator.
179  *
180  * @input:
181  * face ::
182  * A handle to the input face.
183  *
184  * table ::
185  * The pointer to the buffer that is allocated by
186  * @FT_OpenType_Validate.
187  *
188  * @note:
189  * This function must be used to free the buffer allocated by
190  * @FT_OpenType_Validate only.
191  */
192  FT_EXPORT( void )
194  FT_Bytes table );
195 
196  /* */
197 
198 
200 
201 #endif /* FTOTVAL_H_ */
202 
203 
204 /* END */
int FT_Error
Definition: fttypes.h:300
#define FT_END_HEADER
Definition: ftheader.h:54
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
const FT_Byte * FT_Bytes
Definition: fttypes.h:165
unsigned int FT_UInt
Definition: fttypes.h:231
#define FT_EXPORT(x)
Definition: ftconfig.h:461
FT_OpenType_Free(FT_Face face, FT_Bytes table)
Definition: ftotval.c:76
FT_OpenType_Validate(FT_Face face, FT_UInt validation_flags, FT_Bytes *BASE_table, FT_Bytes *GDEF_table, FT_Bytes *GPOS_table, FT_Bytes *GSUB_table, FT_Bytes *JSTF_table)
Definition: ftotval.c:29
GLenum GLuint GLint GLenum face
Definition: glext.h:7025