ReactOS  0.4.13-dev-698-g77671f0
cffparse.h
Go to the documentation of this file.
1 /***************************************************************************/
2 /* */
3 /* cffparse.h */
4 /* */
5 /* CFF token stream parser (specification) */
6 /* */
7 /* Copyright 1996-2018 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
9 /* */
10 /* This file is part of the FreeType project, and may only be used, */
11 /* modified, and distributed under the terms of the FreeType project */
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13 /* this file you indicate that you have read the license and */
14 /* understand and accept it fully. */
15 /* */
16 /***************************************************************************/
17 
18 
19 #ifndef CFFPARSE_H_
20 #define CFFPARSE_H_
21 
22 
23 #include <ft2build.h>
24 #include FT_INTERNAL_CFF_TYPES_H
25 #include FT_INTERNAL_OBJECTS_H
26 
27 
29 
30 
31  /* CFF uses constant parser stack size; */
32  /* CFF2 can increase from default 193 */
33 #define CFF_MAX_STACK_DEPTH 96
34 
35  /*
36  * There are plans to remove the `maxstack' operator in a forthcoming
37  * revision of the CFF2 specification, increasing the (then static) stack
38  * size to 513. By making the default stack size equal to the maximum
39  * stack size, the operator is essentially disabled, which has the
40  * desired effect in FreeType.
41  */
42 #define CFF2_MAX_STACK 513
43 #define CFF2_DEFAULT_STACK 513
44 
45 #define CFF_CODE_TOPDICT 0x1000
46 #define CFF_CODE_PRIVATE 0x2000
47 #define CFF2_CODE_TOPDICT 0x3000
48 #define CFF2_CODE_FONTDICT 0x4000
49 #define CFF2_CODE_PRIVATE 0x5000
50 
51 
52  typedef struct CFF_ParserRec_
53  {
58 
61  FT_UInt stackSize; /* allocated size */
62 
64  void* object;
65 
66  FT_UShort num_designs; /* a copy of `CFF_FontRecDict->num_designs' */
67  FT_UShort num_axes; /* a copy of `CFF_FontRecDict->num_axes' */
68 
70 
71 
72  FT_LOCAL( FT_Long )
74  FT_Byte** d );
75 
78  FT_UInt code,
79  void* object,
81  FT_UInt stackSize,
82  FT_UShort num_designs,
83  FT_UShort num_axes );
84 
85  FT_LOCAL( void )
87 
90  FT_Byte* start,
91  FT_Byte* limit );
92 
93 
94  enum
95  {
105 
106  cff_kind_max /* do not remove */
107  };
108 
109 
110  /* now generate handlers for the most simple fields */
112 
113  typedef struct CFF_Field_Handler_
114  {
115  int kind;
116  int code;
122 
123 #ifdef FT_DEBUG_LEVEL_TRACE
124  const char* id;
125 #endif
126 
128 
129 
131 
132 
133 #endif /* CFFPARSE_H_ */
134 
135 
136 /* END */
int FT_Error
Definition: fttypes.h:300
signed long FT_Long
Definition: fttypes.h:242
cff_parser_done(CFF_Parser parser)
Definition: cffparse.c:81
FT_UInt stackSize
Definition: cffparse.h:61
FT_UInt array_max
Definition: cffparse.h:120
#define FT_END_HEADER
Definition: ftheader.h:54
FT_Library library
Definition: cffdrivr.c:654
FT_Byte ** top
Definition: cffparse.h:60
GLint limit
Definition: glext.h:10326
struct CFF_ParserRec_ * CFF_Parser
unsigned char FT_Byte
Definition: fttypes.h:154
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
#define FT_LOCAL(x)
Definition: ftconfig.h:387
FT_Byte * limit
Definition: cffparse.h:56
FT_UInt object_code
Definition: cffparse.h:63
CFF_Field_Reader reader
Definition: cffparse.h:119
#define d
Definition: ke_i.h:81
FT_UInt count_offset
Definition: cffparse.h:121
FT_Byte * start
Definition: cffparse.h:55
FT_Byte * cursor
Definition: cffparse.h:57
cff_parser_init(CFF_Parser parser, FT_UInt code, void *object, FT_Library library, FT_UInt stackSize, FT_UShort num_designs, FT_UShort num_axes)
Definition: cffparse.c:42
struct CFF_Field_Handler_ CFF_Field_Handler
unsigned int FT_UInt
Definition: fttypes.h:231
GLuint start
Definition: gl.h:1545
FT_Byte ** stack
Definition: cffparse.h:59
Definition: import.c:86
GLenum GLuint id
Definition: glext.h:5579
void * object
Definition: cffparse.h:64
cff_parse_num(CFF_Parser parser, FT_Byte **d)
Definition: cffparse.c:454
unsigned short FT_UShort
Definition: fttypes.h:209
cff_parser_run(CFF_Parser parser, FT_Byte *start, FT_Byte *limit)
Definition: cffparse.c:1300
FT_UShort num_axes
Definition: cffparse.h:67
FT_UShort num_designs
Definition: cffparse.h:66
struct CFF_ParserRec_ CFF_ParserRec
FT_Library library
Definition: cffparse.h:54
FT_Error(* CFF_Field_Reader)(CFF_Parser parser)
Definition: cffparse.h:111