ReactOS
0.4.16-dev-2354-g16de117
cffparse.h
Go to the documentation of this file.
1
/****************************************************************************
2
*
3
* cffparse.h
4
*
5
* CFF token stream parser (specification)
6
*
7
* Copyright (C) 1996-2020 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 <
freetype/internal/cfftypes.h
>
24
#include <
freetype/internal/ftobjs.h
>
25
26
27
FT_BEGIN_HEADER
28
29
30
/* CFF uses constant parser stack size; */
31
/* CFF2 can increase from default 193 */
32
#define CFF_MAX_STACK_DEPTH 96
33
34
/*
35
* There are plans to remove the `maxstack' operator in a forthcoming
36
* revision of the CFF2 specification, increasing the (then static) stack
37
* size to 513. By making the default stack size equal to the maximum
38
* stack size, the operator is essentially disabled, which has the
39
* desired effect in FreeType.
40
*/
41
#define CFF2_MAX_STACK 513
42
#define CFF2_DEFAULT_STACK 513
43
44
#define CFF_CODE_TOPDICT 0x1000
45
#define CFF_CODE_PRIVATE 0x2000
46
#define CFF2_CODE_TOPDICT 0x3000
47
#define CFF2_CODE_FONTDICT 0x4000
48
#define CFF2_CODE_PRIVATE 0x5000
49
50
51
typedef
struct
CFF_ParserRec_
52
{
53
FT_Library
library
;
54
FT_Byte
*
start
;
55
FT_Byte
*
limit
;
56
FT_Byte
*
cursor
;
57
58
FT_Byte
**
stack
;
59
FT_Byte
**
top
;
60
FT_UInt
stackSize
;
/* allocated size */
61
62
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
63
FT_ListRec
t2_strings;
64
#endif
/* CFF_CONFIG_OPTION_OLD_ENGINE */
65
66
FT_UInt
object_code
;
67
void
*
object
;
68
69
FT_UShort
num_designs
;
/* a copy of `CFF_FontRecDict->num_designs' */
70
FT_UShort
num_axes
;
/* a copy of `CFF_FontRecDict->num_axes' */
71
72
}
CFF_ParserRec
, *
CFF_Parser
;
73
74
75
FT_LOCAL
(
FT_Long
)
76
cff_parse_num
(
CFF_Parser
parser
,
77
FT_Byte
**
d
);
78
79
FT_LOCAL
(
FT_Error
)
80
cff_parser_init
(
CFF_Parser
parser
,
81
FT_UInt
code
,
82
void
*
object
,
83
FT_Library
library
,
84
FT_UInt
stackSize,
85
FT_UShort
num_designs,
86
FT_UShort
num_axes );
87
88
FT_LOCAL
(
void
)
89
cff_parser_done
(
CFF_Parser
parser
);
90
91
FT_LOCAL
(
FT_Error
)
92
cff_parser_run
(
CFF_Parser
parser
,
93
FT_Byte
*
start
,
94
FT_Byte
*
limit
);
95
96
97
enum
98
{
99
cff_kind_none
= 0,
100
cff_kind_num
,
101
cff_kind_fixed
,
102
cff_kind_fixed_thousand
,
103
cff_kind_string
,
104
cff_kind_bool
,
105
cff_kind_delta
,
106
cff_kind_callback
,
107
cff_kind_blend
,
108
109
cff_kind_max
/* do not remove */
110
};
111
112
113
/* now generate handlers for the most simple fields */
114
typedef
FT_Error
(*
CFF_Field_Reader
)(
CFF_Parser
parser
);
115
116
typedef
struct
CFF_Field_Handler_
117
{
118
int
kind
;
119
int
code
;
120
FT_UInt
offset
;
121
FT_Byte
size
;
122
CFF_Field_Reader
reader
;
123
FT_UInt
array_max
;
124
FT_UInt
count_offset
;
125
126
#ifdef FT_DEBUG_LEVEL_TRACE
127
const
char
*
id
;
128
#endif
129
130
}
CFF_Field_Handler
;
131
132
133
FT_END_HEADER
134
135
136
#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
137
typedef
struct
CFF_T2_String_
138
{
139
FT_Byte
*
start
;
140
FT_Byte
*
limit
;
141
142
} CFF_T2_StringRec, *CFF_T2_String;
143
#endif
/* CFF_CONFIG_OPTION_OLD_ENGINE */
144
145
#endif
/* CFFPARSE_H_ */
146
147
148
/* END */
library
FT_Library library
Definition:
cffdrivr.c:660
cff_parser_init
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:41
cff_parse_num
cff_parse_num(CFF_Parser parser, FT_Byte **d)
Definition:
cffparse.c:522
CFF_Parser
struct CFF_ParserRec_ * CFF_Parser
CFF_Field_Handler
struct CFF_Field_Handler_ CFF_Field_Handler
cff_parser_done
cff_parser_done(CFF_Parser parser)
Definition:
cffparse.c:97
CFF_ParserRec
struct CFF_ParserRec_ CFF_ParserRec
cff_parser_run
cff_parser_run(CFF_Parser parser, FT_Byte *start, FT_Byte *limit)
Definition:
cffparse.c:1194
cff_kind_callback
@ cff_kind_callback
Definition:
cffparse.h:106
cff_kind_bool
@ cff_kind_bool
Definition:
cffparse.h:104
cff_kind_fixed_thousand
@ cff_kind_fixed_thousand
Definition:
cffparse.h:102
cff_kind_fixed
@ cff_kind_fixed
Definition:
cffparse.h:101
cff_kind_max
@ cff_kind_max
Definition:
cffparse.h:109
cff_kind_delta
@ cff_kind_delta
Definition:
cffparse.h:105
cff_kind_blend
@ cff_kind_blend
Definition:
cffparse.h:107
cff_kind_none
@ cff_kind_none
Definition:
cffparse.h:99
cff_kind_string
@ cff_kind_string
Definition:
cffparse.h:103
cff_kind_num
@ cff_kind_num
Definition:
cffparse.h:100
CFF_Field_Reader
FT_Error(* CFF_Field_Reader)(CFF_Parser parser)
Definition:
cffparse.h:114
cfftypes.h
FT_LOCAL
#define FT_LOCAL(x)
Definition:
compiler-macros.h:186
FT_END_HEADER
#define FT_END_HEADER
Definition:
ftheader.h:57
FT_BEGIN_HEADER
#define FT_BEGIN_HEADER
Definition:
ftheader.h:37
ftobjs.h
FT_Byte
unsigned char FT_Byte
Definition:
fttypes.h:154
FT_Error
int FT_Error
Definition:
fttypes.h:299
FT_Long
signed long FT_Long
Definition:
fttypes.h:242
FT_UShort
unsigned short FT_UShort
Definition:
fttypes.h:209
FT_UInt
unsigned int FT_UInt
Definition:
fttypes.h:231
start
GLuint start
Definition:
gl.h:1545
limit
GLint limit
Definition:
glext.h:10326
id
GLuint id
Definition:
glext.h:5910
d
#define d
Definition:
ke_i.h:81
CFF_Field_Handler_
Definition:
cffparse.h:117
CFF_Field_Handler_::offset
FT_UInt offset
Definition:
cffparse.h:120
CFF_Field_Handler_::kind
int kind
Definition:
cffparse.h:118
CFF_Field_Handler_::count_offset
FT_UInt count_offset
Definition:
cffparse.h:124
CFF_Field_Handler_::code
int code
Definition:
cffparse.h:119
CFF_Field_Handler_::size
FT_Byte size
Definition:
cffparse.h:121
CFF_Field_Handler_::reader
CFF_Field_Reader reader
Definition:
cffparse.h:122
CFF_Field_Handler_::array_max
FT_UInt array_max
Definition:
cffparse.h:123
CFF_ParserRec_
Definition:
cffparse.h:52
CFF_ParserRec_::limit
FT_Byte * limit
Definition:
cffparse.h:55
CFF_ParserRec_::num_designs
FT_UShort num_designs
Definition:
cffparse.h:69
CFF_ParserRec_::object
void * object
Definition:
cffparse.h:67
CFF_ParserRec_::stack
FT_Byte ** stack
Definition:
cffparse.h:58
CFF_ParserRec_::top
FT_Byte ** top
Definition:
cffparse.h:59
CFF_ParserRec_::start
FT_Byte * start
Definition:
cffparse.h:54
CFF_ParserRec_::object_code
FT_UInt object_code
Definition:
cffparse.h:66
CFF_ParserRec_::num_axes
FT_UShort num_axes
Definition:
cffparse.h:70
CFF_ParserRec_::stackSize
FT_UInt stackSize
Definition:
cffparse.h:60
CFF_ParserRec_::cursor
FT_Byte * cursor
Definition:
cffparse.h:56
CFF_ParserRec_::library
FT_Library library
Definition:
cffparse.h:53
FT_LibraryRec_
Definition:
ftobjs.h:894
FT_ListRec_
Definition:
fttypes.h:581
code
Definition:
inflate.c:139
parser
Definition:
import.c:81
sdk
lib
3rdparty
freetype
src
cff
cffparse.h
Generated on Mon Mar 9 2026 06:15:03 for ReactOS by
1.9.6