OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* ftotval.h */ | |
4 /* */ | |
5 /* FreeType API for validating OpenType tables (specification). */ | |
6 /* */ | |
7 /* Copyright 2004, 2005, 2006, 2007 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 "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 | |
43 FT_BEGIN_HEADER | |
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 /*************************************************************************/ | |
62 | |
63 | |
64 /********************************************************************** | |
65 * | |
66 * @enum: | |
67 * FT_VALIDATE_OTXXX | |
68 * | |
69 * @description: | |
70 * A list of bit-field constants used with @FT_OpenType_Validate to | |
71 * indicate which OpenType tables should be validated. | |
72 * | |
73 * @values: | |
74 * FT_VALIDATE_BASE :: | |
75 * Validate BASE table. | |
76 * | |
77 * FT_VALIDATE_GDEF :: | |
78 * Validate GDEF table. | |
79 * | |
80 * FT_VALIDATE_GPOS :: | |
81 * Validate GPOS table. | |
82 * | |
83 * FT_VALIDATE_GSUB :: | |
84 * Validate GSUB table. | |
85 * | |
86 * FT_VALIDATE_JSTF :: | |
87 * Validate JSTF table. | |
88 * | |
89 * FT_VALIDATE_MATH :: | |
90 * Validate MATH table. | |
91 * | |
92 * FT_VALIDATE_OT :: | |
93 * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). | |
94 * | |
95 */ | |
96 #define FT_VALIDATE_BASE 0x0100 | |
97 #define FT_VALIDATE_GDEF 0x0200 | |
98 #define FT_VALIDATE_GPOS 0x0400 | |
99 #define FT_VALIDATE_GSUB 0x0800 | |
100 #define FT_VALIDATE_JSTF 0x1000 | |
101 #define FT_VALIDATE_MATH 0x2000 | |
102 | |
103 #define FT_VALIDATE_OT FT_VALIDATE_BASE | \ | |
104 FT_VALIDATE_GDEF | \ | |
105 FT_VALIDATE_GPOS | \ | |
106 FT_VALIDATE_GSUB | \ | |
107 FT_VALIDATE_JSTF | \ | |
108 FT_VALIDATE_MATH | |
109 | |
110 /* */ | |
111 | |
112 /********************************************************************** | |
113 * | |
114 * @function: | |
115 * FT_OpenType_Validate | |
116 * | |
117 * @description: | |
118 * Validate various OpenType tables to assure that all offsets and | |
119 * indices are valid. The idea is that a higher-level library which | |
120 * actually does the text layout can access those tables without | |
121 * error checking (which can be quite time consuming). | |
122 * | |
123 * @input: | |
124 * face :: | |
125 * A handle to the input face. | |
126 * | |
127 * validation_flags :: | |
128 * A bit field which specifies the tables to be validated. See | |
129 * @FT_VALIDATE_OTXXX for possible values. | |
130 * | |
131 * @output: | |
132 * BASE_table :: | |
133 * A pointer to the BASE table. | |
134 * | |
135 * GDEF_table :: | |
136 * A pointer to the GDEF table. | |
137 * | |
138 * GPOS_table :: | |
139 * A pointer to the GPOS table. | |
140 * | |
141 * GSUB_table :: | |
142 * A pointer to the GSUB table. | |
143 * | |
144 * JSTF_table :: | |
145 * A pointer to the JSTF table. | |
146 * | |
147 * @return: | |
148 * FreeType error code. 0~means success. | |
149 * | |
150 * @note: | |
151 * This function only works with OpenType fonts, returning an error | |
152 * otherwise. | |
153 * | |
154 * After use, the application should deallocate the five tables with | |
155 * @FT_OpenType_Free. A NULL value indicates that the table either | |
156 * doesn't exist in the font, or the application hasn't asked for | |
157 * validation. | |
158 */ | |
159 FT_EXPORT( FT_Error ) | |
160 FT_OpenType_Validate( FT_Face face, | |
161 FT_UInt validation_flags, | |
162 FT_Bytes *BASE_table, | |
163 FT_Bytes *GDEF_table, | |
164 FT_Bytes *GPOS_table, | |
165 FT_Bytes *GSUB_table, | |
166 FT_Bytes *JSTF_table ); | |
167 | |
168 /* */ | |
169 | |
170 /********************************************************************** | |
171 * | |
172 * @function: | |
173 * FT_OpenType_Free | |
174 * | |
175 * @description: | |
176 * Free the buffer allocated by OpenType validator. | |
177 * | |
178 * @input: | |
179 * face :: | |
180 * A handle to the input face. | |
181 * | |
182 * table :: | |
183 * The pointer to the buffer that is allocated by | |
184 * @FT_OpenType_Validate. | |
185 * | |
186 * @note: | |
187 * This function must be used to free the buffer allocated by | |
188 * @FT_OpenType_Validate only. | |
189 */ | |
190 FT_EXPORT( void ) | |
191 FT_OpenType_Free( FT_Face face, | |
192 FT_Bytes table ); | |
193 | |
194 | |
195 /* */ | |
196 | |
197 | |
198 FT_END_HEADER | |
199 | |
200 #endif /* __FTOTVAL_H__ */ | |
201 | |
202 | |
203 /* END */ | |
OLD | NEW |