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