Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
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 (C) 2004-2024 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 <freetype/freetype.h>
34
35#ifdef FREETYPE_H
36#error "freetype.h of FreeType 1 has been loaded!"
37#error "Please fix the directory search order for header files"
38#error "so that freetype.h of FreeType 2 is found first."
39#endif
40
41
43
44
45 /**************************************************************************
46 *
47 * @section:
48 * ot_validation
49 *
50 * @title:
51 * OpenType Validation
52 *
53 * @abstract:
54 * An API to validate OpenType tables.
55 *
56 * @description:
57 * This section contains the declaration of functions to validate some
58 * OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
59 *
60 * @order:
61 * FT_OpenType_Validate
62 * FT_OpenType_Free
63 *
64 * FT_VALIDATE_OTXXX
65 *
66 */
67
68
69 /**************************************************************************
70 *
71 * @enum:
72 * FT_VALIDATE_OTXXX
73 *
74 * @description:
75 * A list of bit-field constants used with @FT_OpenType_Validate to
76 * indicate which OpenType tables should be validated.
77 *
78 * @values:
79 * FT_VALIDATE_BASE ::
80 * Validate BASE table.
81 *
82 * FT_VALIDATE_GDEF ::
83 * Validate GDEF table.
84 *
85 * FT_VALIDATE_GPOS ::
86 * Validate GPOS table.
87 *
88 * FT_VALIDATE_GSUB ::
89 * Validate GSUB table.
90 *
91 * FT_VALIDATE_JSTF ::
92 * Validate JSTF table.
93 *
94 * FT_VALIDATE_MATH ::
95 * Validate MATH table.
96 *
97 * FT_VALIDATE_OT ::
98 * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
99 *
100 */
101#define FT_VALIDATE_BASE 0x0100
102#define FT_VALIDATE_GDEF 0x0200
103#define FT_VALIDATE_GPOS 0x0400
104#define FT_VALIDATE_GSUB 0x0800
105#define FT_VALIDATE_JSTF 0x1000
106#define FT_VALIDATE_MATH 0x2000
107
108#define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \
109 FT_VALIDATE_GDEF | \
110 FT_VALIDATE_GPOS | \
111 FT_VALIDATE_GSUB | \
112 FT_VALIDATE_JSTF | \
113 FT_VALIDATE_MATH )
114
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 error
125 * 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 *
175 * @function:
176 * FT_OpenType_Free
177 *
178 * @description:
179 * Free the buffer allocated by OpenType validator.
180 *
181 * @input:
182 * face ::
183 * A handle to the input face.
184 *
185 * table ::
186 * The pointer to the buffer that is allocated by
187 * @FT_OpenType_Validate.
188 *
189 * @note:
190 * This function must be used to free the buffer allocated by
191 * @FT_OpenType_Validate only.
192 */
193 FT_EXPORT( void )
195 FT_Bytes table );
196
197
198 /* */
199
200
202
203#endif /* FTOTVAL_H_ */
204
205
206/* END */
#define FT_END_HEADER
Definition ftheader.h:57
#define FT_BEGIN_HEADER
Definition ftheader.h:37
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)
FT_OpenType_Free(FT_Face face, FT_Bytes table)
int FT_Error
Definition fttypes.h:302
unsigned int FT_UInt
Definition fttypes.h:234
const FT_Byte * FT_Bytes
Definition fttypes.h:168
#define FT_EXPORT(x)