ReactOS 0.4.15-dev-7788-g1ad9096
psaux.h
Go to the documentation of this file.
1/***************************************************************************/
2/* */
3/* psaux.h */
4/* */
5/* Auxiliary functions and data structures related to PostScript fonts */
6/* (specification). */
7/* */
8/* Copyright 1996-2018 by */
9/* David Turner, Robert Wilhelm, and Werner Lemberg. */
10/* */
11/* This file is part of the FreeType project, and may only be used, */
12/* modified, and distributed under the terms of the FreeType project */
13/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
14/* this file you indicate that you have read the license and */
15/* understand and accept it fully. */
16/* */
17/***************************************************************************/
18
19
20#ifndef PSAUX_H_
21#define PSAUX_H_
22
23
24#include <ft2build.h>
25#include FT_INTERNAL_OBJECTS_H
26#include FT_INTERNAL_TYPE1_TYPES_H
27#include FT_INTERNAL_HASH_H
28#include FT_INTERNAL_TRUETYPE_TYPES_H
29#include FT_SERVICE_POSTSCRIPT_CMAPS_H
30#include FT_INTERNAL_CFF_TYPES_H
31#include FT_INTERNAL_CFF_OBJECTS_TYPES_H
32
33
34
36
37
38 /***********************************************************************/
39 /* */
40 /* PostScript modules driver class. */
41 /* */
42 typedef struct PS_DriverRec_
43 {
45
49 FT_Int32 random_seed;
50
52
53
54 /*************************************************************************/
55 /*************************************************************************/
56 /***** *****/
57 /***** T1_TABLE *****/
58 /***** *****/
59 /*************************************************************************/
60 /*************************************************************************/
61
62
63 typedef struct PS_TableRec_* PS_Table;
64 typedef const struct PS_Table_FuncsRec_* PS_Table_Funcs;
65
66
67 /*************************************************************************/
68 /* */
69 /* <Struct> */
70 /* PS_Table_FuncsRec */
71 /* */
72 /* <Description> */
73 /* A set of function pointers to manage PS_Table objects. */
74 /* */
75 /* <Fields> */
76 /* table_init :: Used to initialize a table. */
77 /* */
78 /* table_done :: Finalizes resp. destroy a given table. */
79 /* */
80 /* table_add :: Adds a new object to a table. */
81 /* */
82 /* table_release :: Releases table data, then finalizes it. */
83 /* */
84 typedef struct PS_Table_FuncsRec_
85 {
90
92 (*done)( PS_Table table );
93
95 (*add)( PS_Table table,
96 FT_Int idx,
97 void* object,
99
101 (*release)( PS_Table table );
102
104
105
106 /*************************************************************************/
107 /* */
108 /* <Struct> */
109 /* PS_TableRec */
110 /* */
111 /* <Description> */
112 /* A PS_Table is a simple object used to store an array of objects in */
113 /* a single memory block. */
114 /* */
115 /* <Fields> */
116 /* block :: The address in memory of the growheap's block. This */
117 /* can change between two object adds, due to */
118 /* reallocation. */
119 /* */
120 /* cursor :: The current top of the grow heap within its block. */
121 /* */
122 /* capacity :: The current size of the heap block. Increments by */
123 /* 1kByte chunks. */
124 /* */
125 /* init :: Set to 0xDEADBEEF if `elements' and `lengths' have */
126 /* been allocated. */
127 /* */
128 /* max_elems :: The maximum number of elements in table. */
129 /* */
130 /* num_elems :: The current number of elements in table. */
131 /* */
132 /* elements :: A table of element addresses within the block. */
133 /* */
134 /* lengths :: A table of element sizes within the block. */
135 /* */
136 /* memory :: The object used for memory operations */
137 /* (alloc/realloc). */
138 /* */
139 /* funcs :: A table of method pointers for this object. */
140 /* */
141 typedef struct PS_TableRec_
142 {
143 FT_Byte* block; /* current memory block */
144 FT_Offset cursor; /* current cursor in memory block */
145 FT_Offset capacity; /* current size of memory block */
147
150 FT_Byte** elements; /* addresses of table elements */
151 FT_UInt* lengths; /* lengths of table elements */
152
155
157
158
159 /*************************************************************************/
160 /*************************************************************************/
161 /***** *****/
162 /***** T1 FIELDS & TOKENS *****/
163 /***** *****/
164 /*************************************************************************/
165 /*************************************************************************/
166
167 typedef struct PS_ParserRec_* PS_Parser;
168
169 typedef struct T1_TokenRec_* T1_Token;
170
171 typedef struct T1_FieldRec_* T1_Field;
172
173
174 /* simple enumeration type used to identify token types */
175 typedef enum T1_TokenType_
176 {
181 T1_TOKEN_TYPE_KEY, /* aka `name' */
182
183 /* do not remove */
185
187
188
189 /* a simple structure used to identify tokens */
190 typedef struct T1_TokenRec_
191 {
192 FT_Byte* start; /* first character of token in input stream */
193 FT_Byte* limit; /* first character after the token */
194 T1_TokenType type; /* type of token */
195
197
198
199 /* enumeration type used to identify object fields */
200 typedef enum T1_FieldType_
201 {
214
215 /* do not remove */
217
219
220
221 typedef enum T1_FieldLocation_
222 {
232
233 /* do not remove */
235
237
238
239 typedef void
242
243
244 /* structure type used to model object fields */
245 typedef struct T1_FieldRec_
246 {
247 const char* ident; /* field identifier */
249 T1_FieldType type; /* type of field */
251 FT_UInt offset; /* offset of field in object */
252 FT_Byte size; /* size of field in bytes */
253 FT_UInt array_max; /* maximum number of elements for */
254 /* array */
255 FT_UInt count_offset; /* offset of element count for */
256 /* arrays; must not be zero if in */
257 /* use -- in other words, a */
258 /* `num_FOO' element must not */
259 /* start the used structure if we */
260 /* parse a `FOO' array */
261 FT_UInt dict; /* where we expect it */
263
264#define T1_FIELD_DICT_FONTDICT ( 1 << 0 ) /* also FontInfo and FDArray */
265#define T1_FIELD_DICT_PRIVATE ( 1 << 1 )
266
267
268
269#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname, _dict ) \
270 { \
271 _ident, T1CODE, _type, \
272 0, \
273 FT_FIELD_OFFSET( _fname ), \
274 FT_FIELD_SIZE( _fname ), \
275 0, 0, \
276 _dict \
277 },
278
279#define T1_NEW_CALLBACK_FIELD( _ident, _reader, _dict ) \
280 { \
281 _ident, T1CODE, T1_FIELD_TYPE_CALLBACK, \
282 (T1_Field_ParseFunc)_reader, \
283 0, 0, \
284 0, 0, \
285 _dict \
286 },
287
288#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max, _dict ) \
289 { \
290 _ident, T1CODE, _type, \
291 0, \
292 FT_FIELD_OFFSET( _fname ), \
293 FT_FIELD_SIZE_DELTA( _fname ), \
294 _max, \
295 FT_FIELD_OFFSET( num_ ## _fname ), \
296 _dict \
297 },
298
299#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max, _dict ) \
300 { \
301 _ident, T1CODE, _type, \
302 0, \
303 FT_FIELD_OFFSET( _fname ), \
304 FT_FIELD_SIZE_DELTA( _fname ), \
305 _max, 0, \
306 _dict \
307 },
308
309
310#define T1_FIELD_BOOL( _ident, _fname, _dict ) \
311 T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BOOL, _fname, _dict )
312
313#define T1_FIELD_NUM( _ident, _fname, _dict ) \
314 T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER, _fname, _dict )
315
316#define T1_FIELD_FIXED( _ident, _fname, _dict ) \
317 T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED, _fname, _dict )
318
319#define T1_FIELD_FIXED_1000( _ident, _fname, _dict ) \
320 T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_1000, _fname, \
321 _dict )
322
323#define T1_FIELD_STRING( _ident, _fname, _dict ) \
324 T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_STRING, _fname, _dict )
325
326#define T1_FIELD_KEY( _ident, _fname, _dict ) \
327 T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_KEY, _fname, _dict )
328
329#define T1_FIELD_BBOX( _ident, _fname, _dict ) \
330 T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BBOX, _fname, _dict )
331
332
333#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax, _dict ) \
334 T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \
335 _fname, _fmax, _dict )
336
337#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax, _dict ) \
338 T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \
339 _fname, _fmax, _dict )
340
341#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax, _dict ) \
342 T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \
343 _fname, _fmax, _dict )
344
345#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax, _dict ) \
346 T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \
347 _fname, _fmax, _dict )
348
349#define T1_FIELD_CALLBACK( _ident, _name, _dict ) \
350 T1_NEW_CALLBACK_FIELD( _ident, _name, _dict )
351
352
353 /*************************************************************************/
354 /*************************************************************************/
355 /***** *****/
356 /***** T1 PARSER *****/
357 /***** *****/
358 /*************************************************************************/
359 /*************************************************************************/
360
362
363 typedef struct PS_Parser_FuncsRec_
364 {
367 FT_Byte* base,
368 FT_Byte* limit,
370
372 (*done)( PS_Parser parser );
373
378
380 (*to_int)( PS_Parser parser );
383 FT_Int power_ten );
384
387 FT_Byte* bytes,
388 FT_Offset max_bytes,
389 FT_ULong* pnum_bytes,
390 FT_Bool delimiters );
391
394 FT_Int max_coords,
395 FT_Short* coords );
398 FT_Int max_values,
400 FT_Int power_ten );
401
404 T1_Token token );
407 T1_Token tokens,
408 FT_UInt max_tokens,
409 FT_Int* pnum_tokens );
410
413 const T1_Field field,
414 void** objects,
415 FT_UInt max_objects,
416 FT_ULong* pflags );
417
420 const T1_Field field,
421 void** objects,
422 FT_UInt max_objects,
423 FT_ULong* pflags );
424
426
427
428 /*************************************************************************/
429 /* */
430 /* <Struct> */
431 /* PS_ParserRec */
432 /* */
433 /* <Description> */
434 /* A PS_Parser is an object used to parse a Type 1 font very quickly. */
435 /* */
436 /* <Fields> */
437 /* cursor :: The current position in the text. */
438 /* */
439 /* base :: Start of the processed text. */
440 /* */
441 /* limit :: End of the processed text. */
442 /* */
443 /* error :: The last error returned. */
444 /* */
445 /* memory :: The object used for memory operations (alloc/realloc). */
446 /* */
447 /* funcs :: A table of functions for the parser. */
448 /* */
449 typedef struct PS_ParserRec_
450 {
456
458
460
461
462 /*************************************************************************/
463 /*************************************************************************/
464 /***** *****/
465 /***** PS BUILDER *****/
466 /***** *****/
467 /*************************************************************************/
468 /*************************************************************************/
469
470
471 typedef struct PS_Builder_ PS_Builder;
473
474 typedef struct PS_Builder_FuncsRec_
475 {
477 (*init)( PS_Builder* ps_builder,
478 void* builder,
479 FT_Bool is_t1 );
480
482 (*done)( PS_Builder* builder );
483
485
486
487 /*************************************************************************/
488 /* */
489 /* <Structure> */
490 /* PS_Builder */
491 /* */
492 /* <Description> */
493 /* A structure used during glyph loading to store its outline. */
494 /* */
495 /* <Fields> */
496 /* memory :: The current memory object. */
497 /* */
498 /* face :: The current face object. */
499 /* */
500 /* glyph :: The current glyph slot. */
501 /* */
502 /* loader :: XXX */
503 /* */
504 /* base :: The base glyph outline. */
505 /* */
506 /* current :: The current glyph outline. */
507 /* */
508 /* pos_x :: The horizontal translation (if composite glyph). */
509 /* */
510 /* pos_y :: The vertical translation (if composite glyph). */
511 /* */
512 /* left_bearing :: The left side bearing point. */
513 /* */
514 /* advance :: The horizontal advance vector. */
515 /* */
516 /* bbox :: Unused. */
517 /* */
518 /* path_begun :: A flag which indicates that a new path has begun. */
519 /* */
520 /* load_points :: If this flag is not set, no points are loaded. */
521 /* */
522 /* no_recurse :: Set but not used. */
523 /* */
524 /* metrics_only :: A boolean indicating that we only want to compute */
525 /* the metrics of a given glyph, not load all of its */
526 /* points. */
527 /* */
528 /* is_t1 :: Set if current font type is Type 1. */
529 /* */
530 /* funcs :: An array of function pointers for the builder. */
531 /* */
533 {
540
543
546
547 FT_BBox* bbox; /* bounding box */
551
554
556
557 };
558
559
560 /*************************************************************************/
561 /*************************************************************************/
562 /***** *****/
563 /***** PS DECODER *****/
564 /***** *****/
565 /*************************************************************************/
566 /*************************************************************************/
567
568#define PS_MAX_OPERANDS 48
569#define PS_MAX_SUBRS_CALLS 16 /* maximum subroutine nesting; */
570 /* only 10 are allowed but there exist */
571 /* fonts like `HiraKakuProN-W3.ttf' */
572 /* (Hiragino Kaku Gothic ProN W3; */
573 /* 8.2d6e1; 2014-12-19) that exceed */
574 /* this limit */
575
576 /* execution context charstring zone */
577
578 typedef struct PS_Decoder_Zone_
579 {
583
585
586
587 typedef FT_Error
589 FT_UInt glyph_index,
591 FT_ULong* length );
592
593 typedef void
597
598
599 typedef struct PS_Decoder_
600 {
602
605
608
612
614 CFF_SubFont current_subfont; /* for current glyph_index */
616
620
623
626
629
630 FT_Byte** glyph_names; /* for pure CFF fonts only */
631 FT_UInt num_glyphs; /* number of glyphs in font */
632
634
636
639
640 /* Type 1 stuff */
641 FT_Service_PsCMaps psnames; /* for seac */
642
643 FT_Int lenIV; /* internal for sub routine calls */
644 FT_UInt* locals_len; /* array of subrs length (optional) */
645 FT_Hash locals_hash; /* used if `num_subrs' was massaged */
646
649
650 PS_Blend blend; /* for multiple master support */
651
654
656
657
658 /*************************************************************************/
659 /*************************************************************************/
660 /***** *****/
661 /***** T1 BUILDER *****/
662 /***** *****/
663 /*************************************************************************/
664 /*************************************************************************/
665
666
667 typedef struct T1_BuilderRec_* T1_Builder;
668
669
670 typedef FT_Error
672 FT_Int count );
673
674 typedef void
676 FT_Pos x,
677 FT_Pos y,
678 FT_Byte flag );
679
680 typedef FT_Error
682 FT_Pos x,
683 FT_Pos y );
684
685 typedef FT_Error
687
688 typedef FT_Error
690 FT_Pos x,
691 FT_Pos y );
692
693 typedef void
695
696
698
699 typedef struct T1_Builder_FuncsRec_
700 {
702 (*init)( T1_Builder builder,
706 FT_Bool hinting );
707
709 (*done)( T1_Builder builder );
710
717
719
720
721 /* an enumeration type to handle charstring parsing states */
722 typedef enum T1_ParseState_
723 {
728
730
731
732 /*************************************************************************/
733 /* */
734 /* <Structure> */
735 /* T1_BuilderRec */
736 /* */
737 /* <Description> */
738 /* A structure used during glyph loading to store its outline. */
739 /* */
740 /* <Fields> */
741 /* memory :: The current memory object. */
742 /* */
743 /* face :: The current face object. */
744 /* */
745 /* glyph :: The current glyph slot. */
746 /* */
747 /* loader :: XXX */
748 /* */
749 /* base :: The base glyph outline. */
750 /* */
751 /* current :: The current glyph outline. */
752 /* */
753 /* max_points :: maximum points in builder outline */
754 /* */
755 /* max_contours :: Maximum number of contours in builder outline. */
756 /* */
757 /* pos_x :: The horizontal translation (if composite glyph). */
758 /* */
759 /* pos_y :: The vertical translation (if composite glyph). */
760 /* */
761 /* left_bearing :: The left side bearing point. */
762 /* */
763 /* advance :: The horizontal advance vector. */
764 /* */
765 /* bbox :: Unused. */
766 /* */
767 /* parse_state :: An enumeration which controls the charstring */
768 /* parsing state. */
769 /* */
770 /* load_points :: If this flag is not set, no points are loaded. */
771 /* */
772 /* no_recurse :: Set but not used. */
773 /* */
774 /* metrics_only :: A boolean indicating that we only want to compute */
775 /* the metrics of a given glyph, not load all of its */
776 /* points. */
777 /* */
778 /* funcs :: An array of function pointers for the builder. */
779 /* */
780 typedef struct T1_BuilderRec_
781 {
788
791
794
795 FT_BBox bbox; /* bounding box */
799
801
802 void* hints_funcs; /* hinter-specific */
803 void* hints_globals; /* hinter-specific */
804
806
808
809
810 /*************************************************************************/
811 /*************************************************************************/
812 /***** *****/
813 /***** T1 DECODER *****/
814 /***** *****/
815 /*************************************************************************/
816 /*************************************************************************/
817
818#if 0
819
820 /*************************************************************************/
821 /* */
822 /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
823 /* calls during glyph loading. */
824 /* */
825#define T1_MAX_SUBRS_CALLS 8
826
827
828 /*************************************************************************/
829 /* */
830 /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */
831 /* minimum of 16 is required. */
832 /* */
833#define T1_MAX_CHARSTRINGS_OPERANDS 32
834
835#endif /* 0 */
836
837
838 typedef struct T1_Decoder_ZoneRec_
839 {
843
845
846
847 typedef struct T1_DecoderRec_* T1_Decoder;
849
850
851 typedef FT_Error
853 FT_UInt glyph_index );
854
855
856 typedef struct T1_Decoder_FuncsRec_
857 {
859 (*init)( T1_Decoder decoder,
863 FT_Byte** glyph_names,
864 PS_Blend blend,
865 FT_Bool hinting,
866 FT_Render_Mode hint_mode,
868
870 (*done)( T1_Decoder decoder );
871
872#ifdef T1_CONFIG_OPTION_OLD_ENGINE
874 (*parse_charstrings_old)( T1_Decoder decoder,
875 FT_Byte* base,
876 FT_UInt len );
877#else
879 (*parse_metrics)( T1_Decoder decoder,
880 FT_Byte* base,
881 FT_UInt len );
882#endif
883
885 (*parse_charstrings)( PS_Decoder* decoder,
886 FT_Byte* charstring_base,
887 FT_ULong charstring_len );
888
889
891
892
893 typedef struct T1_DecoderRec_
894 {
896
899
902
903 FT_Service_PsCMaps psnames; /* for seac */
906
907 FT_Int lenIV; /* internal for sub routine calls */
910 FT_UInt* subrs_len; /* array of subrs length (optional) */
911 FT_Hash subrs_hash; /* used if `num_subrs' was massaged */
912
915
919
920 PS_Blend blend; /* for multiple master support */
921
923
926
929
931
933
935
936
937 /*************************************************************************/
938 /*************************************************************************/
939 /***** *****/
940 /***** CFF BUILDER *****/
941 /***** *****/
942 /*************************************************************************/
943 /*************************************************************************/
944
945
946 typedef struct CFF_Builder_ CFF_Builder;
947
948
949 typedef FT_Error
951 FT_Int count );
952
953 typedef void
955 FT_Pos x,
956 FT_Pos y,
957 FT_Byte flag );
958 typedef FT_Error
960 FT_Pos x,
961 FT_Pos y );
962 typedef FT_Error
964 FT_Pos x,
965 FT_Pos y );
966 typedef void
968
969 typedef FT_Error
971
973
975 {
977 (*init)( CFF_Builder* builder,
980 CFF_GlyphSlot glyph,
981 FT_Bool hinting );
982
984 (*done)( CFF_Builder* builder );
985
992
994
995
996 /*************************************************************************/
997 /* */
998 /* <Structure> */
999 /* CFF_Builder */
1000 /* */
1001 /* <Description> */
1002 /* A structure used during glyph loading to store its outline. */
1003 /* */
1004 /* <Fields> */
1005 /* memory :: The current memory object. */
1006 /* */
1007 /* face :: The current face object. */
1008 /* */
1009 /* glyph :: The current glyph slot. */
1010 /* */
1011 /* loader :: The current glyph loader. */
1012 /* */
1013 /* base :: The base glyph outline. */
1014 /* */
1015 /* current :: The current glyph outline. */
1016 /* */
1017 /* pos_x :: The horizontal translation (if composite glyph). */
1018 /* */
1019 /* pos_y :: The vertical translation (if composite glyph). */
1020 /* */
1021 /* left_bearing :: The left side bearing point. */
1022 /* */
1023 /* advance :: The horizontal advance vector. */
1024 /* */
1025 /* bbox :: Unused. */
1026 /* */
1027 /* path_begun :: A flag which indicates that a new path has begun. */
1028 /* */
1029 /* load_points :: If this flag is not set, no points are loaded. */
1030 /* */
1031 /* no_recurse :: Set but not used. */
1032 /* */
1033 /* metrics_only :: A boolean indicating that we only want to compute */
1034 /* the metrics of a given glyph, not load all of its */
1035 /* points. */
1036 /* */
1037 /* hints_funcs :: Auxiliary pointer for hinting. */
1038 /* */
1039 /* hints_globals :: Auxiliary pointer for hinting. */
1040 /* */
1041 /* funcs :: A table of method pointers for this object. */
1042 /* */
1044 {
1051
1054
1057
1058 FT_BBox bbox; /* bounding box */
1059
1063
1065
1066 void* hints_funcs; /* hinter-specific */
1067 void* hints_globals; /* hinter-specific */
1068
1070 };
1071
1072
1073 /*************************************************************************/
1074 /*************************************************************************/
1075 /***** *****/
1076 /***** CFF DECODER *****/
1077 /***** *****/
1078 /*************************************************************************/
1079 /*************************************************************************/
1080
1081
1082#define CFF_MAX_OPERANDS 48
1083#define CFF_MAX_SUBRS_CALLS 16 /* maximum subroutine nesting; */
1084 /* only 10 are allowed but there exist */
1085 /* fonts like `HiraKakuProN-W3.ttf' */
1086 /* (Hiragino Kaku Gothic ProN W3; */
1087 /* 8.2d6e1; 2014-12-19) that exceed */
1088 /* this limit */
1089#define CFF_MAX_TRANS_ELEMENTS 32
1090
1091 /* execution context charstring zone */
1092
1093 typedef struct CFF_Decoder_Zone_
1094 {
1098
1100
1101
1102 typedef struct CFF_Decoder_
1103 {
1106
1109
1112
1116
1119
1124
1127
1130
1133
1134 FT_Byte** glyph_names; /* for pure CFF fonts only */
1135 FT_UInt num_glyphs; /* number of glyphs in font */
1136
1138
1140
1141 CFF_SubFont current_subfont; /* for current glyph_index */
1142
1145
1147
1148
1150
1152 {
1154 (*init)( CFF_Decoder* decoder,
1155 TT_Face face,
1156 CFF_Size size,
1158 FT_Bool hinting,
1159 FT_Render_Mode hint_mode,
1161 CFF_Decoder_Free_Glyph_Callback free_callback );
1162
1164 (*prepare)( CFF_Decoder* decoder,
1165 CFF_Size size,
1166 FT_UInt glyph_index );
1167
1168#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
1169 FT_Error
1170 (*parse_charstrings_old)( CFF_Decoder* decoder,
1171 FT_Byte* charstring_base,
1172 FT_ULong charstring_len,
1173 FT_Bool in_dict );
1174#endif
1175
1177 (*parse_charstrings)( PS_Decoder* decoder,
1178 FT_Byte* charstring_base,
1179 FT_ULong charstring_len );
1180
1182
1183
1184 /*************************************************************************/
1185 /*************************************************************************/
1186 /***** *****/
1187 /***** AFM PARSER *****/
1188 /***** *****/
1189 /*************************************************************************/
1190 /*************************************************************************/
1191
1193
1195 {
1199 FT_Byte* base,
1200 FT_Byte* limit );
1201
1203 (*done)( AFM_Parser parser );
1204
1206 (*parse)( AFM_Parser parser );
1207
1209
1210
1212
1213
1214 /*************************************************************************/
1215 /* */
1216 /* <Struct> */
1217 /* AFM_ParserRec */
1218 /* */
1219 /* <Description> */
1220 /* An AFM_Parser is a parser for the AFM files. */
1221 /* */
1222 /* <Fields> */
1223 /* memory :: The object used for memory operations (alloc and */
1224 /* realloc). */
1225 /* */
1226 /* stream :: This is an opaque object. */
1227 /* */
1228 /* FontInfo :: The result will be stored here. */
1229 /* */
1230 /* get_index :: A user provided function to get a glyph index by its */
1231 /* name. */
1232 /* */
1233 typedef struct AFM_ParserRec_
1234 {
1237
1239
1241 (*get_index)( const char* name,
1242 FT_Offset len,
1243 void* user_data );
1244
1246
1248
1249
1250 /*************************************************************************/
1251 /*************************************************************************/
1252 /***** *****/
1253 /***** TYPE1 CHARMAPS *****/
1254 /***** *****/
1255 /*************************************************************************/
1256 /*************************************************************************/
1257
1259
1260 typedef struct T1_CMap_ClassesRec_
1261 {
1266
1268
1269
1270 /*************************************************************************/
1271 /*************************************************************************/
1272 /***** *****/
1273 /***** PSAux Module Interface *****/
1274 /***** *****/
1275 /*************************************************************************/
1276 /*************************************************************************/
1277
1278 typedef struct PSAux_ServiceRec_
1279 {
1280 /* don't use `PS_Table_Funcs' and friends to avoid compiler warnings */
1285
1289 FT_UShort seed );
1290
1291 FT_UInt32
1292 (*cff_random)( FT_UInt32 r );
1293
1295 (*ps_decoder_init)( PS_Decoder* ps_decoder,
1296 void* decoder,
1297 FT_Bool is_t1 );
1298
1301 PS_Private priv,
1302 CFF_SubFont subfont );
1303
1305
1306 /* fields after this comment line were added after version 2.1.10 */
1308
1310
1312
1313 /* backward compatible type definition */
1315
1316
1317 /*************************************************************************/
1318 /*************************************************************************/
1319 /***** *****/
1320 /***** Some convenience functions *****/
1321 /***** *****/
1322 /*************************************************************************/
1323 /*************************************************************************/
1324
1325#define IS_PS_NEWLINE( ch ) \
1326 ( (ch) == '\r' || \
1327 (ch) == '\n' )
1328
1329#define IS_PS_SPACE( ch ) \
1330 ( (ch) == ' ' || \
1331 IS_PS_NEWLINE( ch ) || \
1332 (ch) == '\t' || \
1333 (ch) == '\f' || \
1334 (ch) == '\0' )
1335
1336#define IS_PS_SPECIAL( ch ) \
1337 ( (ch) == '/' || \
1338 (ch) == '(' || (ch) == ')' || \
1339 (ch) == '<' || (ch) == '>' || \
1340 (ch) == '[' || (ch) == ']' || \
1341 (ch) == '{' || (ch) == '}' || \
1342 (ch) == '%' )
1343
1344#define IS_PS_DELIM( ch ) \
1345 ( IS_PS_SPACE( ch ) || \
1346 IS_PS_SPECIAL( ch ) )
1347
1348#define IS_PS_DIGIT( ch ) \
1349 ( (ch) >= '0' && (ch) <= '9' )
1350
1351#define IS_PS_XDIGIT( ch ) \
1352 ( IS_PS_DIGIT( ch ) || \
1353 ( (ch) >= 'A' && (ch) <= 'F' ) || \
1354 ( (ch) >= 'a' && (ch) <= 'f' ) )
1355
1356#define IS_PS_BASE85( ch ) \
1357 ( (ch) >= '!' && (ch) <= 'u' )
1358
1359#define IS_PS_TOKEN( cur, limit, token ) \
1360 ( (char)(cur)[0] == (token)[0] && \
1361 ( (cur) + sizeof ( (token) ) == (limit) || \
1362 ( (cur) + sizeof( (token) ) < (limit) && \
1363 IS_PS_DELIM( (cur)[sizeof ( (token) ) - 1] ) ) ) && \
1364 ft_strncmp( (char*)(cur), (token), sizeof ( (token) ) - 1 ) == 0 )
1365
1366
1368
1369#endif /* PSAUX_H_ */
1370
1371
1372/* END */
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
static HRESULT get_callback(IBindCtx *pbc, IBindStatusCallback **callback)
Definition: binding.c:1411
Definition: _stack.h:55
#define T1_MAX_CHARSTRINGS_OPERANDS
Definition: ftoption.h:725
#define T1_MAX_SUBRS_CALLS
Definition: ftoption.h:715
WORD face[3]
Definition: mesh.c:4747
unsigned int idx
Definition: utils.c:41
enum FT_Render_Mode_ FT_Render_Mode
#define FT_END_HEADER
Definition: ftheader.h:54
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
FT_BEGIN_HEADER typedef signed long FT_Pos
Definition: ftimage.h:58
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
unsigned long FT_ULong
Definition: fttypes.h:253
unsigned char FT_Byte
Definition: fttypes.h:154
signed long FT_Fixed
Definition: fttypes.h:288
int FT_Error
Definition: fttypes.h:300
signed long FT_Long
Definition: fttypes.h:242
unsigned short FT_UShort
Definition: fttypes.h:209
signed short FT_Short
Definition: fttypes.h:198
unsigned int FT_UInt
Definition: fttypes.h:231
size_t FT_Offset
Definition: fttypes.h:324
signed int FT_Int
Definition: fttypes.h:220
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLsizeiptr size
Definition: glext.h:5919
GLuint buffer
Definition: glext.h:5915
GLuint coords
Definition: glext.h:7368
GLsizei const GLvoid * pointer
Definition: glext.h:5848
GLint limit
Definition: glext.h:10326
GLboolean GLenum GLenum GLvoid * values
Definition: glext.h:5666
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLenum GLsizei len
Definition: glext.h:6722
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
Definition: glfuncs.h:210
static const CLSID * objects[]
Definition: apphelp.c:112
static IPrintDialogCallback callback
Definition: printdlg.c:326
static char memory[1024 *256]
Definition: process.c:116
FT_Error(* CFF_Builder_Start_Point_Func)(CFF_Builder *builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:963
FT_Error(* CFF_Builder_Check_Points_Func)(CFF_Builder *builder, FT_Int count)
Definition: psaux.h:950
struct T1_Decoder_ZoneRec_ T1_Decoder_ZoneRec
FT_Error(* T1_Decoder_Callback)(T1_Decoder decoder, FT_UInt glyph_index)
Definition: psaux.h:852
struct CFF_Decoder_FuncsRec_ CFF_Decoder_FuncsRec
T1_TokenType_
Definition: psaux.h:176
@ T1_TOKEN_TYPE_STRING
Definition: psaux.h:179
@ T1_TOKEN_TYPE_MAX
Definition: psaux.h:184
@ T1_TOKEN_TYPE_ARRAY
Definition: psaux.h:180
@ T1_TOKEN_TYPE_KEY
Definition: psaux.h:181
@ T1_TOKEN_TYPE_ANY
Definition: psaux.h:178
@ T1_TOKEN_TYPE_NONE
Definition: psaux.h:177
const struct CFF_Builder_FuncsRec_ * CFF_Builder_Funcs
Definition: psaux.h:972
struct PSAux_ServiceRec_ PSAux_ServiceRec
#define CFF_MAX_OPERANDS
Definition: psaux.h:1082
FT_BEGIN_HEADER struct PS_DriverRec_ * PS_Driver
void(* CFF_Builder_Close_Contour_Func)(CFF_Builder *builder)
Definition: psaux.h:967
struct T1_DecoderRec_ * T1_Decoder
Definition: psaux.h:847
struct T1_TokenRec_ T1_TokenRec
struct PS_Builder_FuncsRec_ PS_Builder_FuncsRec
struct T1_FieldRec_ T1_FieldRec
const struct PS_Builder_FuncsRec_ * PS_Builder_Funcs
Definition: psaux.h:472
PSAux_ServiceRec PSAux_Interface
Definition: psaux.h:1314
const struct T1_Builder_FuncsRec_ * T1_Builder_Funcs
Definition: psaux.h:697
struct T1_Decoder_ZoneRec_ * T1_Decoder_Zone
#define CFF_MAX_SUBRS_CALLS
Definition: psaux.h:1083
struct PS_Parser_FuncsRec_ PS_Parser_FuncsRec
struct T1_BuilderRec_ * T1_Builder
Definition: psaux.h:667
const struct T1_CMap_ClassesRec_ * T1_CMap_Classes
Definition: psaux.h:1258
enum T1_FieldType_ T1_FieldType
void(* T1_Builder_Close_Contour_Func)(T1_Builder builder)
Definition: psaux.h:694
struct PS_Decoder_ PS_Decoder
FT_BEGIN_HEADER struct PS_DriverRec_ PS_DriverRec
FT_Error(* T1_Builder_Check_Points_Func)(T1_Builder builder, FT_Int count)
Definition: psaux.h:671
T1_ParseState_
Definition: psaux.h:723
@ T1_Parse_Have_Width
Definition: psaux.h:725
@ T1_Parse_Have_Path
Definition: psaux.h:727
@ T1_Parse_Start
Definition: psaux.h:724
@ T1_Parse_Have_Moveto
Definition: psaux.h:726
struct T1_BuilderRec_ T1_BuilderRec
void(* CFF_Builder_Add_Point_Func)(CFF_Builder *builder, FT_Pos x, FT_Pos y, FT_Byte flag)
Definition: psaux.h:954
FT_Error(* CFF_Builder_Add_Contour_Func)(CFF_Builder *builder)
Definition: psaux.h:970
struct AFM_ParserRec_ * AFM_Parser
Definition: psaux.h:1192
struct CFF_Builder_FuncsRec_ CFF_Builder_FuncsRec
#define PS_MAX_OPERANDS
Definition: psaux.h:568
FT_Error(* CFF_Decoder_Get_Glyph_Callback)(TT_Face face, FT_UInt glyph_index, FT_Byte **pointer, FT_ULong *length)
Definition: psaux.h:588
void(* T1_Field_ParseFunc)(FT_Face face, FT_Pointer parser)
Definition: psaux.h:240
FT_Error(* CFF_Builder_Add_Point1_Func)(CFF_Builder *builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:959
struct PSAux_ServiceRec_ * PSAux_Service
enum T1_FieldLocation_ T1_FieldLocation
T1_FieldType_
Definition: psaux.h:201
@ T1_FIELD_TYPE_KEY
Definition: psaux.h:208
@ T1_FIELD_TYPE_INTEGER_ARRAY
Definition: psaux.h:211
@ T1_FIELD_TYPE_BBOX
Definition: psaux.h:209
@ T1_FIELD_TYPE_FIXED_1000
Definition: psaux.h:206
@ T1_FIELD_TYPE_STRING
Definition: psaux.h:207
@ T1_FIELD_TYPE_FIXED
Definition: psaux.h:205
@ T1_FIELD_TYPE_NONE
Definition: psaux.h:202
@ T1_FIELD_TYPE_MAX
Definition: psaux.h:216
@ T1_FIELD_TYPE_CALLBACK
Definition: psaux.h:213
@ T1_FIELD_TYPE_INTEGER
Definition: psaux.h:204
@ T1_FIELD_TYPE_FIXED_ARRAY
Definition: psaux.h:212
@ T1_FIELD_TYPE_MM_BBOX
Definition: psaux.h:210
@ T1_FIELD_TYPE_BOOL
Definition: psaux.h:203
struct PS_Decoder_Zone_ PS_Decoder_Zone
enum T1_ParseState_ T1_ParseState
struct T1_CMap_ClassesRec_ T1_CMap_ClassesRec
void(* CFF_Decoder_Free_Glyph_Callback)(TT_Face face, FT_Byte **pointer, FT_ULong length)
Definition: psaux.h:594
struct CFF_Decoder_Zone_ CFF_Decoder_Zone
struct AFM_Parser_FuncsRec_ AFM_Parser_FuncsRec
struct T1_TokenRec_ * T1_Token
Definition: psaux.h:169
struct T1_Decoder_FuncsRec_ T1_Decoder_FuncsRec
struct T1_DecoderRec_ T1_DecoderRec
void(* T1_Builder_Add_Point_Func)(T1_Builder builder, FT_Pos x, FT_Pos y, FT_Byte flag)
Definition: psaux.h:675
FT_Error(* T1_Builder_Add_Contour_Func)(T1_Builder builder)
Definition: psaux.h:686
#define CFF_MAX_TRANS_ELEMENTS
Definition: psaux.h:1089
struct PS_ParserRec_ * PS_Parser
Definition: psaux.h:167
struct PS_TableRec_ * PS_Table
Definition: psaux.h:63
const struct PS_Parser_FuncsRec_ * PS_Parser_Funcs
Definition: psaux.h:361
const struct CFF_Decoder_FuncsRec_ * CFF_Decoder_Funcs
Definition: psaux.h:1149
#define PS_MAX_SUBRS_CALLS
Definition: psaux.h:569
struct CFF_Decoder_ CFF_Decoder
struct PS_ParserRec_ PS_ParserRec
FT_Error(* T1_Builder_Start_Point_Func)(T1_Builder builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:689
struct AFM_ParserRec_ AFM_ParserRec
const struct T1_Decoder_FuncsRec_ * T1_Decoder_Funcs
Definition: psaux.h:848
const struct PS_Table_FuncsRec_ * PS_Table_Funcs
Definition: psaux.h:64
struct PS_Table_FuncsRec_ PS_Table_FuncsRec
enum T1_TokenType_ T1_TokenType
struct T1_Builder_FuncsRec_ T1_Builder_FuncsRec
FT_Error(* T1_Builder_Add_Point1_Func)(T1_Builder builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:681
struct AFM_StreamRec_ * AFM_Stream
Definition: psaux.h:1211
struct PS_TableRec_ PS_TableRec
T1_FieldLocation_
Definition: psaux.h:222
@ T1_FIELD_LOCATION_FONT_EXTRA
Definition: psaux.h:225
@ T1_FIELD_LOCATION_BLEND
Definition: psaux.h:231
@ T1_FIELD_LOCATION_CID_INFO
Definition: psaux.h:223
@ T1_FIELD_LOCATION_BBOX
Definition: psaux.h:228
@ T1_FIELD_LOCATION_PRIVATE
Definition: psaux.h:227
@ T1_FIELD_LOCATION_LOADER
Definition: psaux.h:229
@ T1_FIELD_LOCATION_FONT_INFO
Definition: psaux.h:226
@ T1_FIELD_LOCATION_FACE
Definition: psaux.h:230
@ T1_FIELD_LOCATION_MAX
Definition: psaux.h:234
@ T1_FIELD_LOCATION_FONT_DICT
Definition: psaux.h:224
struct T1_FieldRec_ * T1_Field
Definition: psaux.h:171
FT_Memory memory
Definition: psaux.h:1235
FT_Int(* get_index)(const char *name, FT_Offset len, void *user_data)
Definition: psaux.h:1241
void * user_data
Definition: psaux.h:1245
AFM_Stream stream
Definition: psaux.h:1236
AFM_FontInfo FontInfo
Definition: psaux.h:1238
FT_Error(* init)(AFM_Parser parser, FT_Memory memory, FT_Byte *base, FT_Byte *limit)
Definition: psaux.h:1197
FT_Error(* parse)(AFM_Parser parser)
Definition: psaux.h:1206
void(* done)(AFM_Parser parser)
Definition: psaux.h:1203
CFF_Builder_Check_Points_Func check_points
Definition: psaux.h:986
CFF_Builder_Add_Point_Func add_point
Definition: psaux.h:987
CFF_Builder_Add_Contour_Func add_contour
Definition: psaux.h:989
void(* init)(CFF_Builder *builder, TT_Face face, CFF_Size size, CFF_GlyphSlot glyph, FT_Bool hinting)
Definition: psaux.h:977
CFF_Builder_Close_Contour_Func close_contour
Definition: psaux.h:991
CFF_Builder_Add_Point1_Func add_point1
Definition: psaux.h:988
CFF_Builder_Start_Point_Func start_point
Definition: psaux.h:990
void(* done)(CFF_Builder *builder)
Definition: psaux.h:984
FT_Pos pos_x
Definition: psaux.h:1052
FT_Vector left_bearing
Definition: psaux.h:1055
FT_GlyphLoader loader
Definition: psaux.h:1048
TT_Face face
Definition: psaux.h:1046
FT_Memory memory
Definition: psaux.h:1045
FT_Pos pos_y
Definition: psaux.h:1053
CFF_GlyphSlot glyph
Definition: psaux.h:1047
FT_Bool metrics_only
Definition: psaux.h:1064
void * hints_globals
Definition: psaux.h:1067
FT_BBox bbox
Definition: psaux.h:1058
FT_Outline * base
Definition: psaux.h:1049
void * hints_funcs
Definition: psaux.h:1066
FT_Vector advance
Definition: psaux.h:1056
CFF_Builder_FuncsRec funcs
Definition: psaux.h:1069
FT_Bool load_points
Definition: psaux.h:1061
FT_Bool path_begun
Definition: psaux.h:1060
FT_Outline * current
Definition: psaux.h:1050
FT_Bool no_recurse
Definition: psaux.h:1062
FT_Error(* prepare)(CFF_Decoder *decoder, CFF_Size size, FT_UInt glyph_index)
Definition: psaux.h:1164
FT_Error(* parse_charstrings)(PS_Decoder *decoder, FT_Byte *charstring_base, FT_ULong charstring_len)
Definition: psaux.h:1177
void(* init)(CFF_Decoder *decoder, TT_Face face, CFF_Size size, CFF_GlyphSlot slot, FT_Bool hinting, FT_Render_Mode hint_mode, CFF_Decoder_Get_Glyph_Callback get_callback, CFF_Decoder_Free_Glyph_Callback free_callback)
Definition: psaux.h:1154
FT_Byte * cursor
Definition: psaux.h:1097
FT_Byte * limit
Definition: psaux.h:1096
FT_Byte * base
Definition: psaux.h:1095
FT_Vector flex_vectors[7]
Definition: psaux.h:1115
FT_Byte ** glyph_names
Definition: psaux.h:1134
FT_Pos glyph_width
Definition: psaux.h:1117
FT_Bool width_only
Definition: psaux.h:1121
CFF_Builder builder
Definition: psaux.h:1104
FT_Bool read_width
Definition: psaux.h:1120
FT_Int flex_state
Definition: psaux.h:1113
FT_Fixed * top
Definition: psaux.h:1108
FT_Int num_hints
Definition: psaux.h:1122
CFF_Decoder_Get_Glyph_Callback get_glyph_callback
Definition: psaux.h:1143
FT_Int locals_bias
Definition: psaux.h:1128
FT_UInt num_globals
Definition: psaux.h:1126
FT_Pos nominal_width
Definition: psaux.h:1118
FT_Bool seac
Definition: psaux.h:1139
CFF_Font cff
Definition: psaux.h:1105
FT_Fixed buildchar[CFF_MAX_TRANS_ELEMENTS]
Definition: psaux.h:1123
FT_Render_Mode hint_mode
Definition: psaux.h:1137
FT_Byte ** locals
Definition: psaux.h:1131
CFF_Decoder_Zone * zone
Definition: psaux.h:1111
FT_UInt num_glyphs
Definition: psaux.h:1135
CFF_Decoder_Zone zones[CFF_MAX_SUBRS_CALLS+1]
Definition: psaux.h:1110
FT_Int globals_bias
Definition: psaux.h:1129
FT_Byte ** globals
Definition: psaux.h:1132
CFF_Decoder_Free_Glyph_Callback free_glyph_callback
Definition: psaux.h:1144
CFF_SubFont current_subfont
Definition: psaux.h:1141
FT_UInt num_locals
Definition: psaux.h:1125
FT_Int num_flex_vectors
Definition: psaux.h:1114
void(* ps_decoder_init)(PS_Decoder *ps_decoder, void *decoder, FT_Bool is_t1)
Definition: psaux.h:1295
FT_UInt32(* cff_random)(FT_UInt32 r)
Definition: psaux.h:1292
const T1_Builder_FuncsRec * t1_builder_funcs
Definition: psaux.h:1283
T1_CMap_Classes t1_cmap_classes
Definition: psaux.h:1304
void(* t1_make_subfont)(FT_Face face, PS_Private priv, CFF_SubFont subfont)
Definition: psaux.h:1300
const T1_Decoder_FuncsRec * t1_decoder_funcs
Definition: psaux.h:1284
void(* t1_decrypt)(FT_Byte *buffer, FT_Offset length, FT_UShort seed)
Definition: psaux.h:1287
const AFM_Parser_FuncsRec * afm_parser_funcs
Definition: psaux.h:1307
const PS_Parser_FuncsRec * ps_parser_funcs
Definition: psaux.h:1282
const CFF_Decoder_FuncsRec * cff_decoder_funcs
Definition: psaux.h:1309
const PS_Table_FuncsRec * ps_table_funcs
Definition: psaux.h:1281
void(* init)(PS_Builder *ps_builder, void *builder, FT_Bool is_t1)
Definition: psaux.h:477
void(* done)(PS_Builder *builder)
Definition: psaux.h:482
FT_Bool load_points
Definition: psaux.h:549
FT_Vector * advance
Definition: psaux.h:545
FT_Vector * left_bearing
Definition: psaux.h:544
CFF_GlyphSlot glyph
Definition: psaux.h:536
FT_Pos * pos_y
Definition: psaux.h:542
FT_Bool no_recurse
Definition: psaux.h:550
FT_Memory memory
Definition: psaux.h:534
FT_GlyphLoader loader
Definition: psaux.h:537
FT_Pos * pos_x
Definition: psaux.h:541
PS_Builder_FuncsRec funcs
Definition: psaux.h:555
FT_Bool path_begun
Definition: psaux.h:548
FT_Bool is_t1
Definition: psaux.h:553
FT_BBox * bbox
Definition: psaux.h:547
FT_Outline * base
Definition: psaux.h:538
FT_Face face
Definition: psaux.h:535
FT_Outline * current
Definition: psaux.h:539
FT_Bool metrics_only
Definition: psaux.h:552
FT_Byte * limit
Definition: psaux.h:581
FT_Byte * cursor
Definition: psaux.h:582
FT_Byte * base
Definition: psaux.h:580
FT_Generic * cf2_instance
Definition: psaux.h:615
FT_Matrix font_matrix
Definition: psaux.h:647
FT_Byte ** globals
Definition: psaux.h:628
FT_Byte ** glyph_names
Definition: psaux.h:630
FT_UInt num_globals
Definition: psaux.h:622
FT_Int num_flex_vectors
Definition: psaux.h:610
PS_Decoder_Zone * zone
Definition: psaux.h:607
FT_Render_Mode hint_mode
Definition: psaux.h:633
FT_Hash locals_hash
Definition: psaux.h:645
CFF_SubFont current_subfont
Definition: psaux.h:614
FT_UInt num_glyphs
Definition: psaux.h:631
FT_Long * buildchar
Definition: psaux.h:652
CFF_Font cff
Definition: psaux.h:613
FT_Bool seac
Definition: psaux.h:635
FT_Byte ** locals
Definition: psaux.h:627
FT_Vector font_offset
Definition: psaux.h:648
CFF_Decoder_Get_Glyph_Callback get_glyph_callback
Definition: psaux.h:637
FT_UInt len_buildchar
Definition: psaux.h:653
PS_Decoder_Zone zones[PS_MAX_SUBRS_CALLS+1]
Definition: psaux.h:606
FT_Fixed * top
Definition: psaux.h:604
FT_Int flex_state
Definition: psaux.h:609
FT_Vector flex_vectors[7]
Definition: psaux.h:611
FT_Int lenIV
Definition: psaux.h:643
FT_UInt num_locals
Definition: psaux.h:621
FT_Int num_hints
Definition: psaux.h:619
FT_UInt * locals_len
Definition: psaux.h:644
CFF_Decoder_Free_Glyph_Callback free_glyph_callback
Definition: psaux.h:638
FT_Int globals_bias
Definition: psaux.h:625
FT_Bool width_only
Definition: psaux.h:618
PS_Builder builder
Definition: psaux.h:601
FT_Service_PsCMaps psnames
Definition: psaux.h:641
PS_Blend blend
Definition: psaux.h:650
FT_Pos * glyph_width
Definition: psaux.h:617
FT_Int locals_bias
Definition: psaux.h:624
FT_Int darken_params[8]
Definition: psaux.h:48
FT_UInt hinting_engine
Definition: psaux.h:46
FT_DriverRec root
Definition: psaux.h:44
FT_Bool no_stem_darkening
Definition: psaux.h:47
FT_Int32 random_seed
Definition: psaux.h:49
FT_Byte * base
Definition: psaux.h:452
FT_Memory memory
Definition: psaux.h:455
PS_Parser_FuncsRec funcs
Definition: psaux.h:457
FT_Byte * cursor
Definition: psaux.h:451
FT_Error error
Definition: psaux.h:454
FT_Byte * limit
Definition: psaux.h:453
void(* to_token)(PS_Parser parser, T1_Token token)
Definition: psaux.h:403
FT_Error(* load_field_table)(PS_Parser parser, const T1_Field field, void **objects, FT_UInt max_objects, FT_ULong *pflags)
Definition: psaux.h:419
FT_Long(* to_int)(PS_Parser parser)
Definition: psaux.h:380
FT_Error(* to_bytes)(PS_Parser parser, FT_Byte *bytes, FT_Offset max_bytes, FT_ULong *pnum_bytes, FT_Bool delimiters)
Definition: psaux.h:386
void(* skip_spaces)(PS_Parser parser)
Definition: psaux.h:375
FT_Error(* load_field)(PS_Parser parser, const T1_Field field, void **objects, FT_UInt max_objects, FT_ULong *pflags)
Definition: psaux.h:412
void(* skip_PS_token)(PS_Parser parser)
Definition: psaux.h:377
void(* done)(PS_Parser parser)
Definition: psaux.h:372
FT_Int(* to_fixed_array)(PS_Parser parser, FT_Int max_values, FT_Fixed *values, FT_Int power_ten)
Definition: psaux.h:397
void(* init)(PS_Parser parser, FT_Byte *base, FT_Byte *limit, FT_Memory memory)
Definition: psaux.h:366
FT_Int(* to_coord_array)(PS_Parser parser, FT_Int max_coords, FT_Short *coords)
Definition: psaux.h:393
FT_Fixed(* to_fixed)(PS_Parser parser, FT_Int power_ten)
Definition: psaux.h:382
void(* to_token_array)(PS_Parser parser, T1_Token tokens, FT_UInt max_tokens, FT_Int *pnum_tokens)
Definition: psaux.h:406
FT_Memory memory
Definition: psaux.h:153
FT_Byte ** elements
Definition: psaux.h:150
FT_Int num_elems
Definition: psaux.h:149
FT_ULong init
Definition: psaux.h:146
FT_Byte * block
Definition: psaux.h:143
FT_Int max_elems
Definition: psaux.h:148
FT_Offset cursor
Definition: psaux.h:144
FT_Offset capacity
Definition: psaux.h:145
PS_Table_FuncsRec funcs
Definition: psaux.h:154
FT_UInt * lengths
Definition: psaux.h:151
FT_Error(* add)(PS_Table table, FT_Int idx, void *object, FT_UInt length)
Definition: psaux.h:95
FT_Error(* init)(PS_Table table, FT_Int count, FT_Memory memory)
Definition: psaux.h:87
void(* release)(PS_Table table)
Definition: psaux.h:101
void(* done)(PS_Table table)
Definition: psaux.h:92
FT_Bool no_recurse
Definition: psaux.h:798
FT_GlyphSlot glyph
Definition: psaux.h:784
FT_Vector advance
Definition: psaux.h:793
FT_BBox bbox
Definition: psaux.h:795
FT_Outline * base
Definition: psaux.h:786
FT_Face face
Definition: psaux.h:783
FT_Outline * current
Definition: psaux.h:787
FT_Vector left_bearing
Definition: psaux.h:792
FT_Bool metrics_only
Definition: psaux.h:800
FT_Memory memory
Definition: psaux.h:782
FT_Bool load_points
Definition: psaux.h:797
T1_Builder_FuncsRec funcs
Definition: psaux.h:805
FT_Pos pos_y
Definition: psaux.h:790
FT_Pos pos_x
Definition: psaux.h:789
FT_GlyphLoader loader
Definition: psaux.h:785
void * hints_globals
Definition: psaux.h:803
void * hints_funcs
Definition: psaux.h:802
T1_ParseState parse_state
Definition: psaux.h:796
T1_Builder_Check_Points_Func check_points
Definition: psaux.h:711
T1_Builder_Add_Point1_Func add_point1
Definition: psaux.h:713
void(* init)(T1_Builder builder, FT_Face face, FT_Size size, FT_GlyphSlot slot, FT_Bool hinting)
Definition: psaux.h:702
T1_Builder_Add_Point_Func add_point
Definition: psaux.h:712
T1_Builder_Start_Point_Func start_point
Definition: psaux.h:715
void(* done)(T1_Builder builder)
Definition: psaux.h:709
T1_Builder_Close_Contour_Func close_contour
Definition: psaux.h:716
T1_Builder_Add_Contour_Func add_contour
Definition: psaux.h:714
FT_CMap_Class standard
Definition: psaux.h:1262
FT_CMap_Class custom
Definition: psaux.h:1264
FT_CMap_Class expert
Definition: psaux.h:1263
FT_CMap_Class unicode
Definition: psaux.h:1265
FT_Byte ** subrs
Definition: psaux.h:909
FT_Matrix font_matrix
Definition: psaux.h:913
FT_UInt * subrs_len
Definition: psaux.h:910
PS_Blend blend
Definition: psaux.h:920
FT_UInt num_glyphs
Definition: psaux.h:904
FT_Int flex_state
Definition: psaux.h:916
FT_Render_Mode hint_mode
Definition: psaux.h:922
FT_Int num_flex_vectors
Definition: psaux.h:917
FT_Vector flex_vectors[7]
Definition: psaux.h:918
FT_Bool seac
Definition: psaux.h:930
T1_Decoder_ZoneRec zones[T1_MAX_SUBRS_CALLS+1]
Definition: psaux.h:900
FT_UInt len_buildchar
Definition: psaux.h:928
FT_Long * top
Definition: psaux.h:898
T1_Decoder_FuncsRec funcs
Definition: psaux.h:925
FT_Int num_subrs
Definition: psaux.h:908
T1_BuilderRec builder
Definition: psaux.h:895
T1_Decoder_Callback parse_callback
Definition: psaux.h:924
FT_Vector font_offset
Definition: psaux.h:914
FT_Long * buildchar
Definition: psaux.h:927
FT_Service_PsCMaps psnames
Definition: psaux.h:903
FT_Hash subrs_hash
Definition: psaux.h:911
FT_Byte ** glyph_names
Definition: psaux.h:905
T1_Decoder_Zone zone
Definition: psaux.h:901
FT_Int lenIV
Definition: psaux.h:907
FT_Generic cf2_instance
Definition: psaux.h:932
void(* done)(T1_Decoder decoder)
Definition: psaux.h:870
FT_Error(* parse_charstrings)(PS_Decoder *decoder, FT_Byte *charstring_base, FT_ULong charstring_len)
Definition: psaux.h:885
FT_Error(* parse_metrics)(T1_Decoder decoder, FT_Byte *base, FT_UInt len)
Definition: psaux.h:879
FT_Error(* init)(T1_Decoder decoder, FT_Face face, FT_Size size, FT_GlyphSlot slot, FT_Byte **glyph_names, PS_Blend blend, FT_Bool hinting, FT_Render_Mode hint_mode, T1_Decoder_Callback callback)
Definition: psaux.h:859
FT_Byte * cursor
Definition: psaux.h:840
FT_Byte * limit
Definition: psaux.h:842
FT_Byte * base
Definition: psaux.h:841
T1_FieldLocation location
Definition: psaux.h:248
FT_UInt offset
Definition: psaux.h:251
FT_UInt count_offset
Definition: psaux.h:255
FT_UInt dict
Definition: psaux.h:261
FT_UInt array_max
Definition: psaux.h:253
FT_Byte size
Definition: psaux.h:252
T1_Field_ParseFunc reader
Definition: psaux.h:250
const char * ident
Definition: psaux.h:247
T1_FieldType type
Definition: psaux.h:249
FT_Byte * start
Definition: psaux.h:192
T1_TokenType type
Definition: psaux.h:194
FT_Byte * limit
Definition: psaux.h:193
Definition: parser.c:44
Definition: name.c:39
Definition: import.c:81
struct _slot slot
Definition: vfat.h:196