1 /**************************************************************************** 2 * 3 * psobjs.h 4 * 5 * Auxiliary functions for PostScript fonts (specification). 6 * 7 * Copyright 1996-2018 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