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
27FT_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
307FT_END_HEADER
308
309#endif /* PSOBJS_H_ */
310
311
312/* END */
313