1 | /**************************************************************************** |
2 | * |
3 | * psobjs.h |
4 | * |
5 | * Auxiliary functions for PostScript fonts (specification). |
6 | * |
7 | * Copyright (C) 1996-2023 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 | #ifndef PSOBJS_H_ |
20 | #define PSOBJS_H_ |
21 | |
22 | |
23 | #include <freetype/internal/psaux.h> |
24 | #include <freetype/internal/cffotypes.h> |
25 | |
26 | |
27 | FT_BEGIN_HEADER |
28 | |
29 | |
30 | /*************************************************************************/ |
31 | /*************************************************************************/ |
32 | /***** *****/ |
33 | /***** T1_TABLE *****/ |
34 | /***** *****/ |
35 | /*************************************************************************/ |
36 | /*************************************************************************/ |
37 | |
38 | |
39 | FT_CALLBACK_TABLE |
40 | const PS_Table_FuncsRec ps_table_funcs; |
41 | |
42 | FT_CALLBACK_TABLE |
43 | const PS_Parser_FuncsRec ps_parser_funcs; |
44 | |
45 | FT_CALLBACK_TABLE |
46 | const T1_Builder_FuncsRec t1_builder_funcs; |
47 | |
48 | |
49 | FT_LOCAL( FT_Error ) |
50 | ps_table_new( PS_Table table, |
51 | FT_Int count, |
52 | FT_Memory memory ); |
53 | |
54 | FT_LOCAL( FT_Error ) |
55 | ps_table_add( PS_Table table, |
56 | FT_Int idx, |
57 | const void* object, |
58 | FT_UInt length ); |
59 | |
60 | FT_LOCAL( void ) |
61 | ps_table_done( PS_Table table ); |
62 | |
63 | |
64 | FT_LOCAL( void ) |
65 | ps_table_release( PS_Table table ); |
66 | |
67 | |
68 | /*************************************************************************/ |
69 | /*************************************************************************/ |
70 | /***** *****/ |
71 | /***** T1 PARSER *****/ |
72 | /***** *****/ |
73 | /*************************************************************************/ |
74 | /*************************************************************************/ |
75 | |
76 | |
77 | FT_LOCAL( void ) |
78 | ps_parser_skip_spaces( PS_Parser parser ); |
79 | |
80 | FT_LOCAL( void ) |
81 | ps_parser_skip_PS_token( PS_Parser parser ); |
82 | |
83 | FT_LOCAL( void ) |
84 | ps_parser_to_token( PS_Parser parser, |
85 | T1_Token token ); |
86 | |
87 | FT_LOCAL( void ) |
88 | ps_parser_to_token_array( PS_Parser parser, |
89 | T1_Token tokens, |
90 | FT_UInt max_tokens, |
91 | FT_Int* pnum_tokens ); |
92 | |
93 | FT_LOCAL( FT_Error ) |
94 | ps_parser_load_field( PS_Parser parser, |
95 | const T1_Field field, |
96 | void** objects, |
97 | FT_UInt max_objects, |
98 | FT_ULong* pflags ); |
99 | |
100 | FT_LOCAL( FT_Error ) |
101 | ps_parser_load_field_table( PS_Parser parser, |
102 | const T1_Field field, |
103 | void** objects, |
104 | FT_UInt max_objects, |
105 | FT_ULong* pflags ); |
106 | |
107 | FT_LOCAL( FT_Long ) |
108 | ps_parser_to_int( PS_Parser parser ); |
109 | |
110 | |
111 | FT_LOCAL( FT_Error ) |
112 | ps_parser_to_bytes( PS_Parser parser, |
113 | FT_Byte* bytes, |
114 | FT_Offset max_bytes, |
115 | FT_ULong* pnum_bytes, |
116 | FT_Bool delimiters ); |
117 | |
118 | |
119 | FT_LOCAL( FT_Fixed ) |
120 | ps_parser_to_fixed( PS_Parser parser, |
121 | FT_Int power_ten ); |
122 | |
123 | |
124 | FT_LOCAL( FT_Int ) |
125 | ps_parser_to_coord_array( PS_Parser parser, |
126 | FT_Int max_coords, |
127 | FT_Short* coords ); |
128 | |
129 | FT_LOCAL( FT_Int ) |
130 | ps_parser_to_fixed_array( PS_Parser parser, |
131 | FT_Int max_values, |
132 | FT_Fixed* values, |
133 | FT_Int power_ten ); |
134 | |
135 | |
136 | FT_LOCAL( void ) |
137 | ps_parser_init( PS_Parser parser, |
138 | FT_Byte* base, |
139 | FT_Byte* limit, |
140 | FT_Memory memory ); |
141 | |
142 | FT_LOCAL( void ) |
143 | ps_parser_done( PS_Parser parser ); |
144 | |
145 | |
146 | /*************************************************************************/ |
147 | /*************************************************************************/ |
148 | /***** *****/ |
149 | /***** T1 BUILDER *****/ |
150 | /***** *****/ |
151 | /*************************************************************************/ |
152 | /*************************************************************************/ |
153 | |
154 | FT_LOCAL( void ) |
155 | t1_builder_init( T1_Builder builder, |
156 | FT_Face face, |
157 | FT_Size size, |
158 | FT_GlyphSlot glyph, |
159 | FT_Bool hinting ); |
160 | |
161 | FT_LOCAL( void ) |
162 | t1_builder_done( T1_Builder builder ); |
163 | |
164 | FT_LOCAL( FT_Error ) |
165 | t1_builder_check_points( T1_Builder builder, |
166 | FT_Int count ); |
167 | |
168 | FT_LOCAL( void ) |
169 | t1_builder_add_point( T1_Builder builder, |
170 | FT_Pos x, |
171 | FT_Pos y, |
172 | FT_Byte flag ); |
173 | |
174 | FT_LOCAL( FT_Error ) |
175 | t1_builder_add_point1( T1_Builder builder, |
176 | FT_Pos x, |
177 | FT_Pos y ); |
178 | |
179 | FT_LOCAL( FT_Error ) |
180 | t1_builder_add_contour( T1_Builder builder ); |
181 | |
182 | |
183 | FT_LOCAL( FT_Error ) |
184 | t1_builder_start_point( T1_Builder builder, |
185 | FT_Pos x, |
186 | FT_Pos y ); |
187 | |
188 | |
189 | FT_LOCAL( void ) |
190 | t1_builder_close_contour( T1_Builder builder ); |
191 | |
192 | |
193 | /*************************************************************************/ |
194 | /*************************************************************************/ |
195 | /***** *****/ |
196 | /***** CFF BUILDER *****/ |
197 | /***** *****/ |
198 | /*************************************************************************/ |
199 | /*************************************************************************/ |
200 | |
201 | FT_LOCAL( void ) |
202 | cff_builder_init( CFF_Builder* builder, |
203 | TT_Face face, |
204 | CFF_Size size, |
205 | CFF_GlyphSlot glyph, |
206 | FT_Bool hinting ); |
207 | |
208 | FT_LOCAL( void ) |
209 | cff_builder_done( CFF_Builder* builder ); |
210 | |
211 | FT_LOCAL( FT_Error ) |
212 | cff_check_points( CFF_Builder* builder, |
213 | FT_Int count ); |
214 | |
215 | FT_LOCAL( void ) |
216 | cff_builder_add_point( CFF_Builder* builder, |
217 | FT_Pos x, |
218 | FT_Pos y, |
219 | FT_Byte flag ); |
220 | FT_LOCAL( FT_Error ) |
221 | cff_builder_add_point1( CFF_Builder* builder, |
222 | FT_Pos x, |
223 | FT_Pos y ); |
224 | FT_LOCAL( FT_Error ) |
225 | cff_builder_start_point( CFF_Builder* builder, |
226 | FT_Pos x, |
227 | FT_Pos y ); |
228 | FT_LOCAL( void ) |
229 | cff_builder_close_contour( CFF_Builder* builder ); |
230 | |
231 | FT_LOCAL( FT_Error ) |
232 | cff_builder_add_contour( CFF_Builder* builder ); |
233 | |
234 | |
235 | /*************************************************************************/ |
236 | /*************************************************************************/ |
237 | /***** *****/ |
238 | /***** PS BUILDER *****/ |
239 | /***** *****/ |
240 | /*************************************************************************/ |
241 | /*************************************************************************/ |
242 | |
243 | FT_LOCAL( void ) |
244 | ps_builder_init( PS_Builder* ps_builder, |
245 | void* builder, |
246 | FT_Bool is_t1 ); |
247 | |
248 | |
249 | FT_LOCAL( void ) |
250 | ps_builder_done( PS_Builder* builder ); |
251 | |
252 | FT_LOCAL( FT_Error ) |
253 | ps_builder_check_points( PS_Builder* builder, |
254 | FT_Int count ); |
255 | |
256 | FT_LOCAL( void ) |
257 | ps_builder_add_point( PS_Builder* builder, |
258 | FT_Pos x, |
259 | FT_Pos y, |
260 | FT_Byte flag ); |
261 | |
262 | FT_LOCAL( FT_Error ) |
263 | ps_builder_add_point1( PS_Builder* builder, |
264 | FT_Pos x, |
265 | FT_Pos y ); |
266 | |
267 | FT_LOCAL( FT_Error ) |
268 | ps_builder_add_contour( PS_Builder* builder ); |
269 | |
270 | FT_LOCAL( FT_Error ) |
271 | ps_builder_start_point( PS_Builder* builder, |
272 | FT_Pos x, |
273 | FT_Pos y ); |
274 | |
275 | FT_LOCAL( void ) |
276 | ps_builder_close_contour( PS_Builder* builder ); |
277 | |
278 | |
279 | /*************************************************************************/ |
280 | /*************************************************************************/ |
281 | /***** *****/ |
282 | /***** OTHER *****/ |
283 | /***** *****/ |
284 | /*************************************************************************/ |
285 | /*************************************************************************/ |
286 | |
287 | FT_LOCAL( void ) |
288 | ps_decoder_init( PS_Decoder* ps_decoder, |
289 | void* decoder, |
290 | FT_Bool is_t1 ); |
291 | |
292 | FT_LOCAL( void ) |
293 | t1_make_subfont( FT_Face face, |
294 | PS_Private priv, |
295 | CFF_SubFont subfont ); |
296 | |
297 | FT_LOCAL( void ) |
298 | t1_decrypt( FT_Byte* buffer, |
299 | FT_Offset length, |
300 | FT_UShort seed ); |
301 | |
302 | |
303 | FT_LOCAL( FT_UInt32 ) |
304 | cff_random( FT_UInt32 r ); |
305 | |
306 | |
307 | FT_END_HEADER |
308 | |
309 | #endif /* PSOBJS_H_ */ |
310 | |
311 | |
312 | /* END */ |
313 | |