ReactOS  0.4.14-dev-604-gcfdd483
cfftypes.h
Go to the documentation of this file.
1 /***************************************************************************/
2 /* */
3 /* cfftypes.h */
4 /* */
5 /* Basic OpenType/CFF type definitions and interface (specification */
6 /* only). */
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 CFFTYPES_H_
21 #define CFFTYPES_H_
22 
23 
24 #include <ft2build.h>
25 #include FT_FREETYPE_H
26 #include FT_TYPE1_TABLES_H
27 #include FT_INTERNAL_SERVICE_H
28 #include FT_SERVICE_POSTSCRIPT_CMAPS_H
29 #include FT_INTERNAL_POSTSCRIPT_HINTS_H
30 #include FT_INTERNAL_TYPE1_TYPES_H
31 
32 
34 
35 
36  /*************************************************************************/
37  /* */
38  /* <Struct> */
39  /* CFF_IndexRec */
40  /* */
41  /* <Description> */
42  /* A structure used to model a CFF Index table. */
43  /* */
44  /* <Fields> */
45  /* stream :: The source input stream. */
46  /* */
47  /* start :: The position of the first index byte in the */
48  /* input stream. */
49  /* */
50  /* count :: The number of elements in the index. */
51  /* */
52  /* off_size :: The size in bytes of object offsets in index. */
53  /* */
54  /* data_offset :: The position of first data byte in the index's */
55  /* bytes. */
56  /* */
57  /* data_size :: The size of the data table in this index. */
58  /* */
59  /* offsets :: A table of element offsets in the index. Must be */
60  /* loaded explicitly. */
61  /* */
62  /* bytes :: If the index is loaded in memory, its bytes. */
63  /* */
64  typedef struct CFF_IndexRec_
65  {
73 
76 
78 
79 
80  typedef struct CFF_EncodingRec_
81  {
84 
86  FT_UShort sids [256]; /* avoid dynamic allocations */
88 
90 
91 
92  typedef struct CFF_CharsetRec_
93  {
94 
97 
99  FT_UShort* cids; /* the inverse mapping of `sids'; only needed */
100  /* for CID-keyed fonts */
103 
105 
106 
107  /* cf. similar fields in file `ttgxvar.h' from the `truetype' module */
108 
109  typedef struct CFF_VarData_
110  {
111 #if 0
112  FT_UInt itemCount; /* not used; always zero */
113  FT_UInt shortDeltaCount; /* not used; always zero */
114 #endif
115 
116  FT_UInt regionIdxCount; /* number of region indexes */
117  FT_UInt* regionIndices; /* array of `regionIdxCount' indices; */
118  /* these index `varRegionList' */
119  } CFF_VarData;
120 
121 
122  /* contribution of one axis to a region */
123  typedef struct CFF_AxisCoords_
124  {
126  FT_Fixed peakCoord; /* zero peak means no effect (factor = 1) */
128 
129  } CFF_AxisCoords;
130 
131 
132  typedef struct CFF_VarRegion_
133  {
134  CFF_AxisCoords* axisList; /* array of axisCount records */
135 
136  } CFF_VarRegion;
137 
138 
139  typedef struct CFF_VStoreRec_
140  {
142  CFF_VarData* varData; /* array of dataCount records */
143  /* vsindex indexes this array */
145  FT_UInt regionCount; /* total number of regions defined */
147 
149 
150 
151  /* forward reference */
152  typedef struct CFF_FontRec_* CFF_Font;
153 
154 
155  /* This object manages one cached blend vector. */
156  /* */
157  /* There is a BlendRec for Private DICT parsing in each subfont */
158  /* and a BlendRec for charstrings in CF2_Font instance data. */
159  /* A cached BV may be used across DICTs or Charstrings if inputs */
160  /* have not changed. */
161  /* */
162  /* `usedBV' is reset at the start of each parse or charstring. */
163  /* vsindex cannot be changed after a BV is used. */
164  /* */
165  /* Note: NDV is long (32/64 bit), while BV is 16.16 (FT_Int32). */
166  typedef struct CFF_BlendRec_
167  {
168  FT_Bool builtBV; /* blendV has been built */
169  FT_Bool usedBV; /* blendV has been used */
170  CFF_Font font; /* top level font struct */
171  FT_UInt lastVsindex; /* last vsindex used */
172  FT_UInt lenNDV; /* normDV length (aka numAxes) */
173  FT_Fixed* lastNDV; /* last NDV used */
174  FT_UInt lenBV; /* BlendV length (aka numMasters) */
175  FT_Int32* BV; /* current blendV (per DICT/glyph) */
176 
178 
179 
180  typedef struct CFF_FontRecDictRec_
181  {
196  FT_ULong units_per_em; /* temporarily used as scaling value also */
208 
209  /* these should only be used for the top-level font dictionary */
213 
222 
223  /* the next fields come from the data of the deprecated */
224  /* `MultipleMaster' operator; they are needed to parse the (also */
225  /* deprecated) `blend' operator in Type 2 charstrings */
228 
229  /* fields for CFF2 */
232 
234 
235 
236  /* forward reference */
237  typedef struct CFF_SubFontRec_* CFF_SubFont;
238 
239 
240  typedef struct CFF_PrivateRec_
241  {
246 
251 
257 
271 
272  /* fields for CFF2 */
275 
277 
278 
279  typedef struct CFF_FDSelectRec_
280  {
283 
284  /* that's the table, taken from the file `as is' */
287 
288  /* small cache for format 3 only */
292 
294 
295 
296  /* A SubFont packs a font dict and a private dict together. They are */
297  /* needed to support CID-keyed CFF fonts. */
298  typedef struct CFF_SubFontRec_
299  {
302 
303  /* fields for CFF2 */
304  CFF_BlendRec blend; /* current blend vector */
305  FT_UInt lenNDV; /* current length NDV or zero */
306  FT_Fixed* NDV; /* ptr to current NDV or NULL */
307 
308  /* `blend_stack' is a writable buffer to hold blend results. */
309  /* This buffer is to the side of the normal cff parser stack; */
310  /* `cff_parse_blend' and `cff_blend_doBlend' push blend results here. */
311  /* The normal stack then points to these values instead of the DICT */
312  /* because all other operators in Private DICT clear the stack. */
313  /* `blend_stack' could be cleared at each operator other than blend. */
314  /* Blended values are stored as 5-byte fixed point values. */
315 
316  FT_Byte* blend_stack; /* base of stack allocation */
317  FT_Byte* blend_top; /* first empty slot */
318  FT_UInt blend_used; /* number of bytes in use */
319  FT_UInt blend_alloc; /* number of bytes allocated */
320 
322  FT_Byte** local_subrs; /* array of pointers */
323  /* into Local Subrs INDEX data */
324 
325  FT_UInt32 random;
326 
327  } CFF_SubFontRec;
328 
329 
330 #define CFF_MAX_CID_FONTS 256
331 
332 
333  typedef struct CFF_FontRec_
334  {
337  FT_Memory memory; /* TODO: take this from stream->memory? */
338  FT_ULong base_offset; /* offset to start of CFF */
341 
345 
346  FT_UInt top_dict_length; /* cff2 only */
347 
349 
353 
356 
361 
363 
364  /* array of pointers into Global Subrs INDEX data */
366 
367  /* array of pointers into String INDEX data stored at string_pool */
372 
376 
378 
379  /* interface to PostScript hinter */
381 
382  /* interface to Postscript Names service */
383  FT_Service_PsCMaps psnames;
384 
385  /* interface to CFFLoad service */
386  const void* cffload;
387 
388  /* since version 2.3.0 */
389  PS_FontInfoRec* font_info; /* font info dictionary */
390 
391  /* since version 2.3.6 */
394 
395  /* since version 2.4.12 */
397 
398  /* since version 2.7.1 */
399  CFF_VStoreRec vstore; /* parsed vstore structure */
400 
401  /* since version 2.9 */
403 
404  } CFF_FontRec;
405 
406 
408 
409 #endif /* CFFTYPES_H_ */
410 
411 
412 /* END */
FT_ULong base_offset
Definition: cfftypes.h:338
FT_UShort * cids
Definition: cfftypes.h:99
CFF_IndexRec font_dict_index
Definition: cfftypes.h:358
FT_Byte num_family_blues
Definition: cfftypes.h:244
FT_UInt lenBV
Definition: cfftypes.h:174
FT_ULong * offsets
Definition: cfftypes.h:74
FT_ULong string_pool_size
Definition: cfftypes.h:371
FT_UInt cache_count
Definition: cfftypes.h:290
FT_Fixed * lastNDV
Definition: cfftypes.h:173
struct CFF_VStoreRec_ CFF_VStoreRec
FT_ULong local_subrs_offset
Definition: cfftypes.h:268
signed long FT_Long
Definition: fttypes.h:242
FT_ULong private_offset
Definition: cfftypes.h:204
FT_ULong cid_fd_array_offset
Definition: cfftypes.h:219
CFF_Font font
Definition: cfftypes.h:170
FT_ULong cid_fd_select_offset
Definition: cfftypes.h:220
FT_ULong cid_uid_base
Definition: cfftypes.h:218
unsigned long FT_ULong
Definition: fttypes.h:253
FT_Fixed * NDV
Definition: cfftypes.h:306
FT_Byte header_size
Definition: cfftypes.h:344
FT_BEGIN_HEADER typedef signed long FT_Pos
Definition: ftimage.h:58
FT_Int charstring_type
Definition: cfftypes.h:193
FT_Library library
Definition: cfftypes.h:335
CFF_FontRecDictRec font_dict
Definition: cfftypes.h:300
#define FT_END_HEADER
Definition: ftheader.h:54
FT_Generic cf2_instance
Definition: cfftypes.h:396
FT_UShort sids[256]
Definition: cfftypes.h:86
FT_UInt vsindex
Definition: cfftypes.h:273
FT_UInt cid_registry
Definition: cfftypes.h:210
FT_UInt max_cid
Definition: cfftypes.h:101
FT_Pos blue_values[14]
Definition: cfftypes.h:247
FT_ULong charstrings_offset
Definition: cfftypes.h:203
FT_Pos other_blues[10]
Definition: cfftypes.h:248
signed int FT_Int
Definition: fttypes.h:220
FT_Byte num_snap_heights
Definition: cfftypes.h:259
FT_ULong unique_id
Definition: cfftypes.h:198
FT_Long cid_font_type
Definition: cfftypes.h:216
FT_Stream stream
Definition: cfftypes.h:336
struct CFF_FontRecDictRec_ CFF_FontRecDictRec
FT_Byte * blend_top
Definition: cfftypes.h:317
FT_Bool is_fixed_pitch
Definition: cfftypes.h:188
FT_UShort num_axes
Definition: cfftypes.h:227
struct CFF_FontRec_ CFF_FontRec
struct CFF_EncodingRec_ CFF_EncodingRec
struct CFF_SubFontRec_ CFF_SubFontRec
FT_Pos blue_shift
Definition: cfftypes.h:253
FT_UInt data_size
Definition: cfftypes.h:286
FT_UInt num_glyphs
Definition: cfftypes.h:102
FT_UInt num_subfonts
Definition: cfftypes.h:374
FT_Pos snap_widths[13]
Definition: cfftypes.h:260
struct CFF_VarRegion_ CFF_VarRegion
FT_UShort num_designs
Definition: cfftypes.h:226
struct CFF_FontRecDictRec_ * CFF_FontRecDict
FT_ULong cid_count
Definition: cfftypes.h:217
CFF_IndexRec global_subrs_index
Definition: cfftypes.h:352
FT_UInt format
Definition: cfftypes.h:95
PS_FontExtraRec * font_extra
Definition: cfftypes.h:402
FT_Byte ** global_subrs
Definition: cfftypes.h:365
FT_UInt embedded_postscript
Definition: cfftypes.h:207
FT_Fixed blue_scale
Definition: cfftypes.h:252
FT_UInt * regionIndices
Definition: cfftypes.h:117
FT_Bool builtBV
Definition: cfftypes.h:168
FT_Fixed underline_position
Definition: cfftypes.h:190
FT_Pos blue_fuzz
Definition: cfftypes.h:254
FT_UInt cid_font_name
Definition: cfftypes.h:221
FT_Byte * data
Definition: cfftypes.h:285
PS_FontInfoRec * font_info
Definition: cfftypes.h:389
FT_Pos family_blues[14]
Definition: cfftypes.h:249
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
FT_Pos standard_width
Definition: cfftypes.h:255
FT_UInt lastVsindex
Definition: cfftypes.h:171
FT_UInt count
Definition: cfftypes.h:85
FT_ULong units_per_em
Definition: cfftypes.h:196
FT_Fixed startCoord
Definition: cfftypes.h:125
FT_Service_PsCMaps psnames
Definition: cfftypes.h:383
FT_Int lenIV
Definition: cfftypes.h:264
FT_Pos snap_heights[13]
Definition: cfftypes.h:261
FT_Fixed underline_thickness
Definition: cfftypes.h:191
unsigned char FT_Byte
Definition: fttypes.h:154
FT_Byte num_family_other_blues
Definition: cfftypes.h:245
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
const void * cffload
Definition: cfftypes.h:386
FT_UInt blend_used
Definition: cfftypes.h:318
FT_UInt regionIdxCount
Definition: cfftypes.h:116
FT_ULong data_size
Definition: cfftypes.h:72
FT_Bool force_bold
Definition: cfftypes.h:262
FT_Long cid_font_version
Definition: cfftypes.h:214
FT_Bool has_font_matrix
Definition: cfftypes.h:195
FT_Int language_group
Definition: cfftypes.h:265
FT_Int32 * BV
Definition: cfftypes.h:175
CFF_IndexRec charstrings_index
Definition: cfftypes.h:357
FT_BEGIN_HEADER struct CFF_IndexRec_ CFF_IndexRec
FT_UInt count
Definition: cfftypes.h:69
FT_Byte * blend_stack
Definition: cfftypes.h:316
FT_Memory memory
Definition: cfftypes.h:337
FT_ULong vstore_offset
Definition: cfftypes.h:230
FT_Byte format
Definition: cfftypes.h:281
FT_UInt family_name
Definition: cfftypes.h:186
PSHinter_Service pshinter
Definition: cfftypes.h:380
CFF_IndexRec local_subrs_index
Definition: cfftypes.h:360
FT_Fixed italic_angle
Definition: cfftypes.h:189
CFF_VarData * varData
Definition: cfftypes.h:142
CFF_FDSelectRec fd_select
Definition: cfftypes.h:377
struct CFF_PrivateRec_ CFF_PrivateRec
CFF_PrivateRec private_dict
Definition: cfftypes.h:301
FT_Stream stream
Definition: cfftypes.h:66
FT_Bool usedBV
Definition: cfftypes.h:169
FT_Byte * bytes
Definition: cfftypes.h:75
FT_Long cid_font_revision
Definition: cfftypes.h:215
FT_UInt32 random
Definition: cfftypes.h:325
FT_Byte cache_fd
Definition: cfftypes.h:291
struct CFF_SubFontRec_ * CFF_SubFont
Definition: cfftypes.h:237
FT_ULong data_offset
Definition: cfftypes.h:71
FT_ULong offset
Definition: cfftypes.h:83
char FT_String
Definition: fttypes.h:187
struct CFF_VStoreRec_ * CFF_VStore
FT_Pos nominal_width
Definition: cfftypes.h:270
FT_Fixed endCoord
Definition: cfftypes.h:127
FT_UShort axisCount
Definition: cfftypes.h:144
FT_Fixed expansion_factor
Definition: cfftypes.h:266
FT_UInt num_faces
Definition: cfftypes.h:339
FT_Matrix font_matrix
Definition: cfftypes.h:194
FT_Byte num_snap_widths
Definition: cfftypes.h:258
FT_ULong charset_offset
Definition: cfftypes.h:201
struct CFF_VarData_ CFF_VarData
#define CFF_MAX_CID_FONTS
Definition: cfftypes.h:330
FT_UInt lenNDV
Definition: cfftypes.h:172
FT_Pos default_width
Definition: cfftypes.h:269
FT_Byte ** local_subrs
Definition: cfftypes.h:322
FT_Long initial_random_seed
Definition: cfftypes.h:267
FT_ULong start
Definition: cfftypes.h:67
struct CFF_CharsetRec_ * CFF_Charset
FT_String * font_name
Definition: cfftypes.h:362
CFF_BlendRec blend
Definition: cfftypes.h:304
FT_Byte num_other_blues
Definition: cfftypes.h:243
FT_Fixed force_bold_threshold
Definition: cfftypes.h:263
struct CFF_PrivateRec_ * CFF_Private
struct CFF_BlendRec_ * CFF_Blend
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
CFF_VStoreRec vstore
Definition: cfftypes.h:399
CFF_IndexRec top_dict_index
Definition: cfftypes.h:351
CFF_IndexRec name_index
Definition: cfftypes.h:350
FT_UShort * sids
Definition: cfftypes.h:98
FT_UInt num_strings
Definition: cfftypes.h:368
FT_Pos standard_height
Definition: cfftypes.h:256
FT_ULong encoding_offset
Definition: cfftypes.h:202
struct CFF_FontRec_ * CFF_Font
Definition: cfftypes.h:152
CFF_IndexRec local_subrs_index
Definition: cfftypes.h:321
FT_UInt num_glyphs
Definition: cfftypes.h:340
signed long FT_Fixed
Definition: fttypes.h:288
FT_Long cid_supplement
Definition: cfftypes.h:212
struct CFF_FDSelectRec_ CFF_FDSelectRec
unsigned int FT_UInt
Definition: fttypes.h:231
CFF_VarRegion * varRegionList
Definition: cfftypes.h:146
CFF_EncodingRec encoding
Definition: cfftypes.h:354
FT_UInt regionCount
Definition: cfftypes.h:145
struct CFF_FDSelectRec_ * CFF_FDSelect
FT_UInt blend_alloc
Definition: cfftypes.h:319
struct CFF_EncodingRec_ * CFF_Encoding
FT_Bool cff2
Definition: cfftypes.h:348
FT_ULong offset
Definition: cfftypes.h:96
FT_Byte version_minor
Definition: cfftypes.h:343
FT_UInt lenNDV
Definition: cfftypes.h:305
CFF_SubFont subfonts[CFF_MAX_CID_FONTS]
Definition: cfftypes.h:375
FT_UInt cache_first
Definition: cfftypes.h:289
FT_UInt format
Definition: cfftypes.h:82
FT_Byte version_major
Definition: cfftypes.h:342
FT_BEGIN_HEADER struct PS_FontInfoRec_ PS_FontInfoRec
FT_Byte off_size
Definition: cfftypes.h:70
FT_Byte ** strings
Definition: cfftypes.h:369
struct CFF_AxisCoords_ CFF_AxisCoords
struct CFF_BlendRec_ CFF_BlendRec
CFF_AxisCoords * axisList
Definition: cfftypes.h:134
CFF_IndexRec private_index
Definition: cfftypes.h:359
FT_UInt hdr_size
Definition: cfftypes.h:68
unsigned short FT_UShort
Definition: fttypes.h:209
FT_UInt top_dict_length
Definition: cfftypes.h:346
FT_Pos family_other_blues[10]
Definition: cfftypes.h:250
FT_ULong private_size
Definition: cfftypes.h:205
FT_UInt dataCount
Definition: cfftypes.h:141
FT_UShort codes[256]
Definition: cfftypes.h:87
FT_String * ordering
Definition: cfftypes.h:393
CFF_CharsetRec charset
Definition: cfftypes.h:355
struct CFF_CharsetRec_ CFF_CharsetRec
FT_Vector font_offset
Definition: cfftypes.h:197
FT_UInt range_count
Definition: cfftypes.h:282
FT_Fixed peakCoord
Definition: cfftypes.h:126
FT_String * registry
Definition: cfftypes.h:392
FT_Byte * string_pool
Definition: cfftypes.h:370
FT_Byte num_blue_values
Definition: cfftypes.h:242
CFF_SubFontRec top_font
Definition: cfftypes.h:373
FT_Long synthetic_base
Definition: cfftypes.h:206
FT_BEGIN_HEADER struct CFF_IndexRec_ * CFF_Index
CFF_SubFont subfont
Definition: cfftypes.h:274
FT_UInt cid_ordering
Definition: cfftypes.h:211