ReactOS  0.4.14-dev-317-g96040ec
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  {
86  FT_Error
88  FT_Int count,
89  FT_Memory memory );
90 
91  void
93 
94  FT_Error
96  FT_Int idx,
97  void* object,
98  FT_UInt length );
99 
100  void
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 
156  } PS_TableRec;
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 
186  } T1_TokenType;
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 
196  } T1_TokenRec;
197 
198 
199  /* enumeration type used to identify object fields */
200  typedef enum T1_FieldType_
201  {
214 
215  /* do not remove */
217 
218  } T1_FieldType;
219 
220 
221  typedef enum T1_FieldLocation_
222  {
232 
233  /* do not remove */
235 
237 
238 
239  typedef void
241  FT_Pointer parser );
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 */
262  } T1_FieldRec;
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 
361  typedef const struct PS_Parser_FuncsRec_* PS_Parser_Funcs;
362 
363  typedef struct PS_Parser_FuncsRec_
364  {
365  void
367  FT_Byte* base,
368  FT_Byte* limit,
369  FT_Memory memory );
370 
371  void
373 
374  void
376  void
378 
379  FT_Long
381  FT_Fixed
383  FT_Int power_ten );
384 
385  FT_Error
387  FT_Byte* bytes,
388  FT_Offset max_bytes,
389  FT_ULong* pnum_bytes,
390  FT_Bool delimiters );
391 
392  FT_Int
394  FT_Int max_coords,
395  FT_Short* coords );
396  FT_Int
398  FT_Int max_values,
399  FT_Fixed* values,
400  FT_Int power_ten );
401 
402  void
404  T1_Token token );
405  void
407  T1_Token tokens,
408  FT_UInt max_tokens,
409  FT_Int* pnum_tokens );
410 
411  FT_Error
413  const T1_Field field,
414  void** objects,
415  FT_UInt max_objects,
416  FT_ULong* pflags );
417 
418  FT_Error
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 
459  } PS_ParserRec;
460 
461 
462  /*************************************************************************/
463  /*************************************************************************/
464  /***** *****/
465  /***** PS BUILDER *****/
466  /***** *****/
467  /*************************************************************************/
468  /*************************************************************************/
469 
470 
471  typedef struct PS_Builder_ PS_Builder;
472  typedef const struct PS_Builder_FuncsRec_* PS_Builder_Funcs;
473 
474  typedef struct PS_Builder_FuncsRec_
475  {
476  void
477  (*init)( PS_Builder* ps_builder,
478  void* builder,
479  FT_Bool is_t1 );
480 
481  void
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  /* */
532  struct PS_Builder_
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 
584  } PS_Decoder_Zone;
585 
586 
587  typedef FT_Error
589  FT_UInt glyph_index,
590  FT_Byte** pointer,
591  FT_ULong* length );
592 
593  typedef void
595  FT_Byte** pointer,
596  FT_ULong length );
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 
655  } PS_Decoder;
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 
697  typedef const struct T1_Builder_FuncsRec_* T1_Builder_Funcs;
698 
699  typedef struct T1_Builder_FuncsRec_
700  {
701  void
702  (*init)( T1_Builder builder,
703  FT_Face face,
704  FT_Size size,
706  FT_Bool hinting );
707 
708  void
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 
729  } T1_ParseState;
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 
807  } T1_BuilderRec;
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;
848  typedef const struct T1_Decoder_FuncsRec_* T1_Decoder_Funcs;
849 
850 
851  typedef FT_Error
853  FT_UInt glyph_index );
854 
855 
856  typedef struct T1_Decoder_FuncsRec_
857  {
858  FT_Error
859  (*init)( T1_Decoder decoder,
860  FT_Face face,
861  FT_Size size,
863  FT_Byte** glyph_names,
864  PS_Blend blend,
865  FT_Bool hinting,
866  FT_Render_Mode hint_mode,
868 
869  void
870  (*done)( T1_Decoder decoder );
871 
872 #ifdef T1_CONFIG_OPTION_OLD_ENGINE
873  FT_Error
874  (*parse_charstrings_old)( T1_Decoder decoder,
875  FT_Byte* base,
876  FT_UInt len );
877 #else
878  FT_Error
880  FT_Byte* base,
881  FT_UInt len );
882 #endif
883 
884  FT_Error
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 
934  } T1_DecoderRec;
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 
974  typedef struct CFF_Builder_FuncsRec_
975  {
976  void
977  (*init)( CFF_Builder* builder,
978  TT_Face face,
979  CFF_Size size,
980  CFF_GlyphSlot glyph,
981  FT_Bool hinting );
982 
983  void
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 
1099  } CFF_Decoder_Zone;
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 
1146  } CFF_Decoder;
1147 
1148 
1150 
1151  typedef struct CFF_Decoder_FuncsRec_
1152  {
1153  void
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 
1163  FT_Error
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 
1176  FT_Error
1178  FT_Byte* charstring_base,
1179  FT_ULong charstring_len );
1180 
1182 
1183 
1184  /*************************************************************************/
1185  /*************************************************************************/
1186  /***** *****/
1187  /***** AFM PARSER *****/
1188  /***** *****/
1189  /*************************************************************************/
1190  /*************************************************************************/
1191 
1192  typedef struct AFM_ParserRec_* AFM_Parser;
1193 
1194  typedef struct AFM_Parser_FuncsRec_
1195  {
1196  FT_Error
1198  FT_Memory memory,
1199  FT_Byte* base,
1200  FT_Byte* limit );
1201 
1202  void
1204 
1205  FT_Error
1207 
1209 
1210 
1211  typedef struct AFM_StreamRec_* AFM_Stream;
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 
1240  FT_Int
1241  (*get_index)( const char* name,
1242  FT_Offset len,
1243  void* user_data );
1244 
1245  void* user_data;
1246 
1247  } AFM_ParserRec;
1248 
1249 
1250  /*************************************************************************/
1251  /*************************************************************************/
1252  /***** *****/
1253  /***** TYPE1 CHARMAPS *****/
1254  /***** *****/
1255  /*************************************************************************/
1256  /*************************************************************************/
1257 
1258  typedef const struct T1_CMap_ClassesRec_* T1_CMap_Classes;
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 
1286  void
1288  FT_Offset length,
1289  FT_UShort seed );
1290 
1291  FT_UInt32
1292  (*cff_random)( FT_UInt32 r );
1293 
1294  void
1295  (*ps_decoder_init)( PS_Decoder* ps_decoder,
1296  void* decoder,
1297  FT_Bool is_t1 );
1298 
1299  void
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 */
FT_Long * buildchar
Definition: psaux.h:652
void(* done)(CFF_Builder *builder)
Definition: psaux.h:984
FT_UInt num_locals
Definition: psaux.h:621
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_Error(* CFF_Builder_Add_Contour_Func)(CFF_Builder *builder)
Definition: psaux.h:970
enum T1_TokenType_ T1_TokenType
FT_UInt * locals_len
Definition: psaux.h:644
int FT_Error
Definition: fttypes.h:300
struct CFF_Builder_FuncsRec_ CFF_Builder_FuncsRec
void(* release)(PS_Table table)
Definition: psaux.h:101
T1_FieldLocation_
Definition: psaux.h:221
struct PS_Decoder_Zone_ PS_Decoder_Zone
T1_ParseState_
Definition: psaux.h:722
T1_Builder_Add_Point1_Func add_point1
Definition: psaux.h:713
struct T1_Builder_FuncsRec_ T1_Builder_FuncsRec
FT_UInt num_globals
Definition: psaux.h:622
FT_Memory memory
Definition: psaux.h:534
void(* done)(AFM_Parser parser)
Definition: psaux.h:1203
static HRESULT get_callback(IBindCtx *pbc, IBindStatusCallback **callback)
Definition: binding.c:1411
signed long FT_Long
Definition: fttypes.h:242
T1_Builder_Start_Point_Func start_point
Definition: psaux.h:715
FT_Byte * cursor
Definition: psaux.h:1097
FT_Outline * base
Definition: psaux.h:1049
#define PS_MAX_OPERANDS
Definition: psaux.h:568
unsigned long FT_ULong
Definition: fttypes.h:253
CFF_Decoder_Free_Glyph_Callback free_glyph_callback
Definition: psaux.h:638
FT_Vector advance
Definition: psaux.h:793
FT_BEGIN_HEADER typedef signed long FT_Pos
Definition: ftimage.h:58
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
CFF_Builder_FuncsRec funcs
Definition: psaux.h:1069
FT_Byte ** glyph_names
Definition: psaux.h:905
FT_UInt num_globals
Definition: psaux.h:1126
T1_FieldType type
Definition: psaux.h:249
struct PS_Parser_FuncsRec_ PS_Parser_FuncsRec
FT_Int lenIV
Definition: psaux.h:907
FT_Byte ** globals
Definition: psaux.h:1132
FT_UInt num_glyphs
Definition: psaux.h:1135
FT_Fixed * top
Definition: psaux.h:1108
FT_UInt * subrs_len
Definition: psaux.h:910
FT_BBox bbox
Definition: psaux.h:1058
void(* init)(PS_Parser parser, FT_Byte *base, FT_Byte *limit, FT_Memory memory)
Definition: psaux.h:366
FT_Int(* to_fixed_array)(PS_Parser parser, FT_Int max_values, FT_Fixed *values, FT_Int power_ten)
Definition: psaux.h:397
FT_GlyphLoader loader
Definition: psaux.h:537
#define CFF_MAX_SUBRS_CALLS
Definition: psaux.h:1083
struct AFM_StreamRec_ * AFM_Stream
Definition: psaux.h:1211
FT_Byte * limit
Definition: psaux.h:842
#define FT_END_HEADER
Definition: ftheader.h:54
struct _slot slot
Definition: vfat.h:196
struct T1_FieldRec_ T1_FieldRec
CFF_Decoder_Zone * zone
Definition: psaux.h:1111
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
FT_Render_Mode hint_mode
Definition: psaux.h:1137
FT_Outline * base
Definition: psaux.h:786
FT_Service_PsCMaps psnames
Definition: psaux.h:641
FT_Long(* to_int)(PS_Parser parser)
Definition: psaux.h:380
GLsizei const GLvoid * pointer
Definition: glext.h:5848
enum T1_FieldType_ T1_FieldType
struct T1_DecoderRec_ * T1_Decoder
Definition: psaux.h:847
struct AFM_ParserRec_ AFM_ParserRec
signed int FT_Int
Definition: fttypes.h:220
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
PS_Parser_FuncsRec funcs
Definition: psaux.h:457
FT_Matrix font_matrix
Definition: psaux.h:647
enum T1_FieldLocation_ T1_FieldLocation
void(* to_token_array)(PS_Parser parser, T1_Token tokens, FT_UInt max_tokens, FT_Int *pnum_tokens)
Definition: psaux.h:406
FT_Int flex_state
Definition: psaux.h:609
struct T1_Decoder_ZoneRec_ T1_Decoder_ZoneRec
GLuint GLuint GLsizei count
Definition: gl.h:1545
AFM_Stream stream
Definition: psaux.h:1236
FT_GlyphSlot glyph
Definition: psaux.h:784
FT_Bool path_begun
Definition: psaux.h:1060
FT_Vector left_bearing
Definition: psaux.h:1055
enum FT_Render_Mode_ FT_Render_Mode
FT_CMap_Class custom
Definition: psaux.h:1264
FT_Pos glyph_width
Definition: psaux.h:1117
FT_Long * top
Definition: psaux.h:898
GLboolean GLenum GLenum GLvoid * values
Definition: glext.h:5666
const struct T1_Builder_FuncsRec_ * T1_Builder_Funcs
Definition: psaux.h:697
CFF_SubFont current_subfont
Definition: psaux.h:614
FT_Bool metrics_only
Definition: psaux.h:800
FT_Service_PsCMaps psnames
Definition: psaux.h:903
FT_Fixed buildchar[CFF_MAX_TRANS_ELEMENTS]
Definition: psaux.h:1123
FT_Error(* parse_charstrings)(PS_Decoder *decoder, FT_Byte *charstring_base, FT_ULong charstring_len)
Definition: psaux.h:885
CFF_Decoder_Free_Glyph_Callback free_glyph_callback
Definition: psaux.h:1144
const struct CFF_Builder_FuncsRec_ * CFF_Builder_Funcs
Definition: psaux.h:972
CFF_SubFont current_subfont
Definition: psaux.h:1141
void(* done)(T1_Builder builder)
Definition: psaux.h:709
FT_Error(* parse)(AFM_Parser parser)
Definition: psaux.h:1206
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
GLuint buffer
Definition: glext.h:5915
FT_Error(* T1_Decoder_Callback)(T1_Decoder decoder, FT_UInt glyph_index)
Definition: psaux.h:852
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
PS_Blend blend
Definition: psaux.h:920
void(* T1_Builder_Close_Contour_Func)(T1_Builder builder)
Definition: psaux.h:694
FT_UInt array_max
Definition: psaux.h:253
FT_Byte ** globals
Definition: psaux.h:628
FT_CMap_Class expert
Definition: psaux.h:1263
FT_Int flex_state
Definition: psaux.h:1113
FT_Vector advance
Definition: psaux.h:1056
PSAux_ServiceRec PSAux_Interface
Definition: psaux.h:1314
void(* done)(PS_Table table)
Definition: psaux.h:92
T1_Field_ParseFunc reader
Definition: psaux.h:250
FT_Error(* CFF_Builder_Start_Point_Func)(CFF_Builder *builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:963
FT_Byte * start
Definition: psaux.h:192
GLuint coords
Definition: glext.h:7368
WORD face[3]
Definition: mesh.c:4747
FT_DriverRec root
Definition: psaux.h:44
FT_Int num_flex_vectors
Definition: psaux.h:917
void(* done)(T1_Decoder decoder)
Definition: psaux.h:870
struct T1_TokenRec_ T1_TokenRec
FT_UInt count_offset
Definition: psaux.h:255
FT_Byte ** glyph_names
Definition: psaux.h:630
static char memory[1024 *256]
Definition: process.c:116
struct CFF_Decoder_ CFF_Decoder
void(* ps_decoder_init)(PS_Decoder *ps_decoder, void *decoder, FT_Bool is_t1)
Definition: psaux.h:1295
FT_Memory memory
Definition: psaux.h:1045
FT_Byte ** elements
Definition: psaux.h:150
FT_Vector font_offset
Definition: psaux.h:648
const struct PS_Builder_FuncsRec_ * PS_Builder_Funcs
Definition: psaux.h:472
PS_Decoder_Zone * zone
Definition: psaux.h:607
FT_BEGIN_HEADER struct PS_DriverRec_ * PS_Driver
CFF_Builder builder
Definition: psaux.h:1104
GLint limit
Definition: glext.h:10326
FT_Bool metrics_only
Definition: psaux.h:1064
T1_Decoder_Callback parse_callback
Definition: psaux.h:924
FT_Bool seac
Definition: psaux.h:1139
FT_Vector flex_vectors[7]
Definition: psaux.h:918
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
void(* skip_PS_token)(PS_Parser parser)
Definition: psaux.h:377
FT_Byte ** glyph_names
Definition: psaux.h:1134
FT_Bool no_recurse
Definition: psaux.h:798
static const CLSID * objects[]
Definition: apphelp.c:110
FT_UInt num_locals
Definition: psaux.h:1125
FT_Bool width_only
Definition: psaux.h:1121
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
FT_Bool no_recurse
Definition: psaux.h:550
FT_Int max_elems
Definition: psaux.h:148
const T1_Decoder_FuncsRec * t1_decoder_funcs
Definition: psaux.h:1284
unsigned char FT_Byte
Definition: fttypes.h:154
T1_Decoder_Zone zone
Definition: psaux.h:901
FT_Int globals_bias
Definition: psaux.h:1129
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
T1_Builder_Check_Points_Func check_points
Definition: psaux.h:711
struct PS_ParserRec_ PS_ParserRec
GLuint base
Definition: 3dtext.c:35
FT_Outline * base
Definition: psaux.h:538
void(* to_token)(PS_Parser parser, T1_Token token)
Definition: psaux.h:403
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
PS_Builder_FuncsRec funcs
Definition: psaux.h:555
FT_Int(* to_coord_array)(PS_Parser parser, FT_Int max_coords, FT_Short *coords)
Definition: psaux.h:393
unsigned int idx
Definition: utils.c:41
#define T1_MAX_SUBRS_CALLS
Definition: ftoption.h:715
PS_Blend blend
Definition: psaux.h:650
FT_Error(* T1_Builder_Start_Point_Func)(T1_Builder builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:689
#define CFF_MAX_TRANS_ELEMENTS
Definition: psaux.h:1089
FT_Int flex_state
Definition: psaux.h:916
struct PS_ParserRec_ * PS_Parser
Definition: psaux.h:167
void(* skip_spaces)(PS_Parser parser)
Definition: psaux.h:375
void(* init)(T1_Builder builder, FT_Face face, FT_Size size, FT_GlyphSlot slot, FT_Bool hinting)
Definition: psaux.h:702
FT_Byte * limit
Definition: psaux.h:581
void(* init)(CFF_Builder *builder, TT_Face face, CFF_Size size, CFF_GlyphSlot glyph, FT_Bool hinting)
Definition: psaux.h:977
FT_Error(* CFF_Decoder_Get_Glyph_Callback)(TT_Face face, FT_UInt glyph_index, FT_Byte **pointer, FT_ULong *length)
Definition: psaux.h:588
FT_Byte * base
Definition: psaux.h:1095
FT_Error(* load_field)(PS_Parser parser, const T1_Field field, void **objects, FT_UInt max_objects, FT_ULong *pflags)
Definition: psaux.h:412
FT_UInt offset
Definition: psaux.h:251
struct AFM_Parser_FuncsRec_ AFM_Parser_FuncsRec
#define T1_MAX_CHARSTRINGS_OPERANDS
Definition: ftoption.h:725
FT_Bool seac
Definition: psaux.h:635
FT_ULong init
Definition: psaux.h:146
FT_CMap_Class unicode
Definition: psaux.h:1265
FT_Int globals_bias
Definition: psaux.h:625
FT_Byte * limit
Definition: psaux.h:1096
PS_Builder builder
Definition: psaux.h:601
T1_ParseState parse_state
Definition: psaux.h:796
FT_Memory memory
Definition: psaux.h:153
FT_Pos pos_x
Definition: psaux.h:1052
FT_Byte * base
Definition: psaux.h:452
FT_Int num_flex_vectors
Definition: psaux.h:1114
const struct PS_Table_FuncsRec_ * PS_Table_Funcs
Definition: psaux.h:64
FT_GlyphLoader loader
Definition: psaux.h:1048
FT_Vector flex_vectors[7]
Definition: psaux.h:611
struct T1_FieldRec_ * T1_Field
Definition: psaux.h:171
FT_Vector * left_bearing
Definition: psaux.h:544
AFM_FontInfo FontInfo
Definition: psaux.h:1238
FT_Error(* CFF_Builder_Check_Points_Func)(CFF_Builder *builder, FT_Int count)
Definition: psaux.h:950
FT_Bool is_t1
Definition: psaux.h:553
FT_Error(* CFF_Builder_Add_Point1_Func)(CFF_Builder *builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:959
enum T1_ParseState_ T1_ParseState
Definition: _stack.h:47
CFF_Builder_Add_Point1_Func add_point1
Definition: psaux.h:988
FT_Error(* init)(AFM_Parser parser, FT_Memory memory, FT_Byte *base, FT_Byte *limit)
Definition: psaux.h:1197
FT_Bool width_only
Definition: psaux.h:618
void(* T1_Field_ParseFunc)(FT_Face face, FT_Pointer parser)
Definition: psaux.h:240
void(* CFF_Builder_Close_Contour_Func)(CFF_Builder *builder)
Definition: psaux.h:967
T1_Builder_Close_Contour_Func close_contour
Definition: psaux.h:716
FT_Bool no_stem_darkening
Definition: psaux.h:47
FT_Byte * cursor
Definition: psaux.h:582
FT_Int(* get_index)(const char *name, FT_Offset len, void *user_data)
Definition: psaux.h:1241
FT_Outline * current
Definition: psaux.h:539
T1_TokenType type
Definition: psaux.h:194
MmuTrapHandler callback[0x30]
Definition: mmuobject.c:44
FT_Long * buildchar
Definition: psaux.h:927
FT_UInt num_glyphs
Definition: psaux.h:631
GLsizeiptr size
Definition: glext.h:5919
FT_Bool read_width
Definition: psaux.h:1120
CFF_Builder_Add_Point_Func add_point
Definition: psaux.h:987
FT_Int num_flex_vectors
Definition: psaux.h:610
FT_Error(* T1_Builder_Add_Point1_Func)(T1_Builder builder, FT_Pos x, FT_Pos y)
Definition: psaux.h:681
void * hints_globals
Definition: psaux.h:1067
struct PS_Table_FuncsRec_ PS_Table_FuncsRec
Definition: parser.c:43
FT_Outline * current
Definition: psaux.h:1050
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
PS_Table_FuncsRec funcs
Definition: psaux.h:154
FT_Offset capacity
Definition: psaux.h:145
struct PSAux_ServiceRec_ * PSAux_Service
FT_Face face
Definition: psaux.h:783
FT_Pos pos_y
Definition: psaux.h:1053
struct CFF_Decoder_FuncsRec_ CFF_Decoder_FuncsRec
FT_Render_Mode hint_mode
Definition: psaux.h:633
FT_CMap_Class standard
Definition: psaux.h:1262
FT_Error error
Definition: psaux.h:454
FT_Byte ** locals
Definition: psaux.h:627
FT_Memory memory
Definition: psaux.h:782
FT_Pos * glyph_width
Definition: psaux.h:617
FT_Hash locals_hash
Definition: psaux.h:645
T1_BuilderRec builder
Definition: psaux.h:895
FT_BEGIN_HEADER struct PS_DriverRec_ PS_DriverRec
FT_Byte ** locals
Definition: psaux.h:1131
FT_UInt dict
Definition: psaux.h:261
FT_Memory memory
Definition: psaux.h:1235
FT_Error(* T1_Builder_Check_Points_Func)(T1_Builder builder, FT_Int count)
Definition: psaux.h:671
const PS_Table_FuncsRec * ps_table_funcs
Definition: psaux.h:1281
FT_Pos pos_x
Definition: psaux.h:789
FT_Error(* prepare)(CFF_Decoder *decoder, CFF_Size size, FT_UInt glyph_index)
Definition: psaux.h:1164
const struct T1_CMap_ClassesRec_ * T1_CMap_Classes
Definition: psaux.h:1258
const char * ident
Definition: psaux.h:247
T1_CMap_Classes t1_cmap_classes
Definition: psaux.h:1304
const CFF_Decoder_FuncsRec * cff_decoder_funcs
Definition: psaux.h:1309
CFF_Decoder_Get_Glyph_Callback get_glyph_callback
Definition: psaux.h:1143
void * user_data
Definition: psaux.h:1245
FT_Byte ** subrs
Definition: psaux.h:909
struct PS_TableRec_ * PS_Table
Definition: psaux.h:63
T1_Decoder_FuncsRec funcs
Definition: psaux.h:925
FT_Bool no_recurse
Definition: psaux.h:1062
FT_Vector left_bearing
Definition: psaux.h:792
FT_Outline * current
Definition: psaux.h:787
FT_Error(* T1_Builder_Add_Contour_Func)(T1_Builder builder)
Definition: psaux.h:686
FT_Pos nominal_width
Definition: psaux.h:1118
TT_Face face
Definition: psaux.h:1046
FT_Byte * cursor
Definition: psaux.h:451
struct PS_Builder_FuncsRec_ PS_Builder_FuncsRec
T1_Builder_Add_Contour_Func add_contour
Definition: psaux.h:714
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
FT_Fixed(* to_fixed)(PS_Parser parser, FT_Int power_ten)
Definition: psaux.h:382
struct AFM_ParserRec_ * AFM_Parser
Definition: psaux.h:1192
signed short FT_Short
Definition: fttypes.h:198
FT_Byte * base
Definition: psaux.h:580
CFF_Decoder_Get_Glyph_Callback get_glyph_callback
Definition: psaux.h:637
FT_Byte * block
Definition: psaux.h:143
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
T1_Builder_FuncsRec funcs
Definition: psaux.h:805
GLenum GLsizei len
Definition: glext.h:6722
const AFM_Parser_FuncsRec * afm_parser_funcs
Definition: psaux.h:1307
FT_Int num_hints
Definition: psaux.h:619
CFF_GlyphSlot glyph
Definition: psaux.h:536
FT_Vector * advance
Definition: psaux.h:545
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
struct T1_TokenRec_ * T1_Token
Definition: psaux.h:169
FT_Int num_hints
Definition: psaux.h:1122
CFF_Builder_Add_Contour_Func add_contour
Definition: psaux.h:989
#define CFF_MAX_OPERANDS
Definition: psaux.h:1082
FT_BBox * bbox
Definition: psaux.h:547
FT_Fixed * top
Definition: psaux.h:604
void(* T1_Builder_Add_Point_Func)(T1_Builder builder, FT_Pos x, FT_Pos y, FT_Byte flag)
Definition: psaux.h:675
FT_BBox bbox
Definition: psaux.h:795
FT_Int32 random_seed
Definition: psaux.h:49
struct T1_BuilderRec_ T1_BuilderRec
FT_Bool load_points
Definition: psaux.h:549
T1_FieldType_
Definition: psaux.h:200
CFF_Builder_Close_Contour_Func close_contour
Definition: psaux.h:991
FT_Bool metrics_only
Definition: psaux.h:552
void * hints_funcs
Definition: psaux.h:802
CFF_Builder_Start_Point_Func start_point
Definition: psaux.h:990
FT_Int locals_bias
Definition: psaux.h:1128
struct T1_BuilderRec_ * T1_Builder
Definition: psaux.h:667
FT_Matrix font_matrix
Definition: psaux.h:913
CFF_Font cff
Definition: psaux.h:1105
signed long FT_Fixed
Definition: fttypes.h:288
FT_Pos * pos_y
Definition: psaux.h:542
const struct CFF_Decoder_FuncsRec_ * CFF_Decoder_Funcs
Definition: psaux.h:1149
void * hints_funcs
Definition: psaux.h:1066
FT_GlyphLoader loader
Definition: psaux.h:785
FT_Memory memory
Definition: psaux.h:455
unsigned int FT_UInt
Definition: fttypes.h:231
void(* CFF_Decoder_Free_Glyph_Callback)(TT_Face face, FT_Byte **pointer, FT_ULong length)
Definition: psaux.h:594
CFF_Decoder_Zone zones[CFF_MAX_SUBRS_CALLS+1]
Definition: psaux.h:1110
FT_Bool load_points
Definition: psaux.h:1061
T1_Builder_Add_Point_Func add_point
Definition: psaux.h:712
FT_UInt len_buildchar
Definition: psaux.h:653
const struct PS_Parser_FuncsRec_ * PS_Parser_Funcs
Definition: psaux.h:361
FT_Int darken_params[8]
Definition: psaux.h:48
FT_UInt len_buildchar
Definition: psaux.h:928
FT_Error(* add)(PS_Table table, FT_Int idx, void *object, FT_UInt length)
Definition: psaux.h:95
FT_Bool seac
Definition: psaux.h:930
T1_Decoder_ZoneRec zones[T1_MAX_SUBRS_CALLS+1]
Definition: psaux.h:900
void(* done)(PS_Builder *builder)
Definition: psaux.h:482
FT_Generic * cf2_instance
Definition: psaux.h:615
T1_FieldLocation location
Definition: psaux.h:248
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
void(* t1_decrypt)(FT_Byte *buffer, FT_Offset length, FT_UShort seed)
Definition: psaux.h:1287
FT_UInt hinting_engine
Definition: psaux.h:46
void(* init)(PS_Builder *ps_builder, void *builder, FT_Bool is_t1)
Definition: psaux.h:477
FT_Int num_subrs
Definition: psaux.h:908
const T1_Builder_FuncsRec * t1_builder_funcs
Definition: psaux.h:1283
T1_TokenType_
Definition: psaux.h:175
FT_Byte * limit
Definition: psaux.h:453
struct T1_CMap_ClassesRec_ T1_CMap_ClassesRec
FT_UInt32(* cff_random)(FT_UInt32 r)
Definition: psaux.h:1292
FT_Bool load_points
Definition: psaux.h:797
struct T1_Decoder_FuncsRec_ T1_Decoder_FuncsRec
Definition: import.c:86
CFF_Font cff
Definition: psaux.h:613
void * hints_globals
Definition: psaux.h:803
FT_Int lenIV
Definition: psaux.h:643
#define PS_MAX_SUBRS_CALLS
Definition: psaux.h:569
struct PSAux_ServiceRec_ PSAux_ServiceRec
CFF_GlyphSlot glyph
Definition: psaux.h:1047
struct CFF_Decoder_Zone_ CFF_Decoder_Zone
FT_Render_Mode hint_mode
Definition: psaux.h:922
FT_Hash subrs_hash
Definition: psaux.h:911
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 size
Definition: psaux.h:252
FT_Error(* init)(PS_Table table, FT_Int count, FT_Memory memory)
Definition: psaux.h:87
FT_Vector font_offset
Definition: psaux.h:914
FT_Face face
Definition: psaux.h:535
FT_Byte * limit
Definition: psaux.h:193
void(* done)(PS_Parser parser)
Definition: psaux.h:372
unsigned short FT_UShort
Definition: fttypes.h:209
FT_Error(* parse_metrics)(T1_Decoder decoder, FT_Byte *base, FT_UInt len)
Definition: psaux.h:879
struct T1_Decoder_ZoneRec_ * T1_Decoder_Zone
FT_Pos * pos_x
Definition: psaux.h:541
FT_Pos pos_y
Definition: psaux.h:790
FT_Int num_elems
Definition: psaux.h:149
void(* t1_make_subfont)(FT_Face face, PS_Private priv, CFF_SubFont subfont)
Definition: psaux.h:1300
const PS_Parser_FuncsRec * ps_parser_funcs
Definition: psaux.h:1282
FT_Vector flex_vectors[7]
Definition: psaux.h:1115
struct T1_DecoderRec_ T1_DecoderRec
CFF_Builder_Check_Points_Func check_points
Definition: psaux.h:986
FT_UInt num_glyphs
Definition: psaux.h:904
struct PS_TableRec_ PS_TableRec
void * object
Definition: jmemsys.h:48
FT_UInt * lengths
Definition: psaux.h:151
void(* CFF_Builder_Add_Point_Func)(CFF_Builder *builder, FT_Pos x, FT_Pos y, FT_Byte flag)
Definition: psaux.h:954
FT_Generic cf2_instance
Definition: psaux.h:932
FT_Bool path_begun
Definition: psaux.h:548
struct PS_Decoder_ PS_Decoder
size_t FT_Offset
Definition: fttypes.h:324
FT_Byte * cursor
Definition: psaux.h:840
FT_Byte * base
Definition: psaux.h:841
FT_Int locals_bias
Definition: psaux.h:624
FT_Offset cursor
Definition: psaux.h:144
PS_Decoder_Zone zones[PS_MAX_SUBRS_CALLS+1]
Definition: psaux.h:606
GLuint const GLchar * name
Definition: glext.h:6031
const struct T1_Decoder_FuncsRec_ * T1_Decoder_Funcs
Definition: psaux.h:848