OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* cfftypes.h */ | |
4 /* */ | |
5 /* Basic OpenType/CFF type definitions and interface (specification */ | |
6 /* only). */ | |
7 /* */ | |
8 /* Copyright 1996-2003, 2006-2008, 2010-2011, 2013 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 "../../include/ft2build.h" | |
25 #include "../../include/freetype/freetype.h" | |
26 #include "../../include/freetype/t1tables.h" | |
27 #include "../../include/freetype/internal/ftserv.h" | |
28 #include "../../include/freetype/internal/services/svpscmap.h" | |
29 #include "../../include/freetype/internal/pshints.h" | |
30 | |
31 | |
32 FT_BEGIN_HEADER | |
33 | |
34 | |
35 /*************************************************************************/ | |
36 /* */ | |
37 /* <Struct> */ | |
38 /* CFF_IndexRec */ | |
39 /* */ | |
40 /* <Description> */ | |
41 /* A structure used to model a CFF Index table. */ | |
42 /* */ | |
43 /* <Fields> */ | |
44 /* stream :: The source input stream. */ | |
45 /* */ | |
46 /* start :: The position of the first index byte in the */ | |
47 /* input stream. */ | |
48 /* */ | |
49 /* count :: The number of elements in the index. */ | |
50 /* */ | |
51 /* off_size :: The size in bytes of object offsets in index. */ | |
52 /* */ | |
53 /* data_offset :: The position of first data byte in the index's */ | |
54 /* bytes. */ | |
55 /* */ | |
56 /* data_size :: The size of the data table in this index. */ | |
57 /* */ | |
58 /* offsets :: A table of element offsets in the index. Must be */ | |
59 /* loaded explicitly. */ | |
60 /* */ | |
61 /* bytes :: If the index is loaded in memory, its bytes. */ | |
62 /* */ | |
63 typedef struct CFF_IndexRec_ | |
64 { | |
65 FT_Stream stream; | |
66 FT_ULong start; | |
67 FT_UInt count; | |
68 FT_Byte off_size; | |
69 FT_ULong data_offset; | |
70 FT_ULong data_size; | |
71 | |
72 FT_ULong* offsets; | |
73 FT_Byte* bytes; | |
74 | |
75 } CFF_IndexRec, *CFF_Index; | |
76 | |
77 | |
78 typedef struct CFF_EncodingRec_ | |
79 { | |
80 FT_UInt format; | |
81 FT_ULong offset; | |
82 | |
83 FT_UInt count; | |
84 FT_UShort sids [256]; /* avoid dynamic allocations */ | |
85 FT_UShort codes[256]; | |
86 | |
87 } CFF_EncodingRec, *CFF_Encoding; | |
88 | |
89 | |
90 typedef struct CFF_CharsetRec_ | |
91 { | |
92 | |
93 FT_UInt format; | |
94 FT_ULong offset; | |
95 | |
96 FT_UShort* sids; | |
97 FT_UShort* cids; /* the inverse mapping of `sids'; only needed */ | |
98 /* for CID-keyed fonts */ | |
99 FT_UInt max_cid; | |
100 FT_UInt num_glyphs; | |
101 | |
102 } CFF_CharsetRec, *CFF_Charset; | |
103 | |
104 | |
105 typedef struct CFF_FontRecDictRec_ | |
106 { | |
107 FT_UInt version; | |
108 FT_UInt notice; | |
109 FT_UInt copyright; | |
110 FT_UInt full_name; | |
111 FT_UInt family_name; | |
112 FT_UInt weight; | |
113 FT_Bool is_fixed_pitch; | |
114 FT_Fixed italic_angle; | |
115 FT_Fixed underline_position; | |
116 FT_Fixed underline_thickness; | |
117 FT_Int paint_type; | |
118 FT_Int charstring_type; | |
119 FT_Matrix font_matrix; | |
120 FT_Bool has_font_matrix; | |
121 FT_ULong units_per_em; /* temporarily used as scaling value also */ | |
122 FT_Vector font_offset; | |
123 FT_ULong unique_id; | |
124 FT_BBox font_bbox; | |
125 FT_Pos stroke_width; | |
126 FT_ULong charset_offset; | |
127 FT_ULong encoding_offset; | |
128 FT_ULong charstrings_offset; | |
129 FT_ULong private_offset; | |
130 FT_ULong private_size; | |
131 FT_Long synthetic_base; | |
132 FT_UInt embedded_postscript; | |
133 | |
134 /* these should only be used for the top-level font dictionary */ | |
135 FT_UInt cid_registry; | |
136 FT_UInt cid_ordering; | |
137 FT_Long cid_supplement; | |
138 | |
139 FT_Long cid_font_version; | |
140 FT_Long cid_font_revision; | |
141 FT_Long cid_font_type; | |
142 FT_ULong cid_count; | |
143 FT_ULong cid_uid_base; | |
144 FT_ULong cid_fd_array_offset; | |
145 FT_ULong cid_fd_select_offset; | |
146 FT_UInt cid_font_name; | |
147 | |
148 } CFF_FontRecDictRec, *CFF_FontRecDict; | |
149 | |
150 | |
151 typedef struct CFF_PrivateRec_ | |
152 { | |
153 FT_Byte num_blue_values; | |
154 FT_Byte num_other_blues; | |
155 FT_Byte num_family_blues; | |
156 FT_Byte num_family_other_blues; | |
157 | |
158 FT_Pos blue_values[14]; | |
159 FT_Pos other_blues[10]; | |
160 FT_Pos family_blues[14]; | |
161 FT_Pos family_other_blues[10]; | |
162 | |
163 FT_Fixed blue_scale; | |
164 FT_Pos blue_shift; | |
165 FT_Pos blue_fuzz; | |
166 FT_Pos standard_width; | |
167 FT_Pos standard_height; | |
168 | |
169 FT_Byte num_snap_widths; | |
170 FT_Byte num_snap_heights; | |
171 FT_Pos snap_widths[13]; | |
172 FT_Pos snap_heights[13]; | |
173 FT_Bool force_bold; | |
174 FT_Fixed force_bold_threshold; | |
175 FT_Int lenIV; | |
176 FT_Int language_group; | |
177 FT_Fixed expansion_factor; | |
178 FT_Long initial_random_seed; | |
179 FT_ULong local_subrs_offset; | |
180 FT_Pos default_width; | |
181 FT_Pos nominal_width; | |
182 | |
183 } CFF_PrivateRec, *CFF_Private; | |
184 | |
185 | |
186 typedef struct CFF_FDSelectRec_ | |
187 { | |
188 FT_Byte format; | |
189 FT_UInt range_count; | |
190 | |
191 /* that's the table, taken from the file `as is' */ | |
192 FT_Byte* data; | |
193 FT_UInt data_size; | |
194 | |
195 /* small cache for format 3 only */ | |
196 FT_UInt cache_first; | |
197 FT_UInt cache_count; | |
198 FT_Byte cache_fd; | |
199 | |
200 } CFF_FDSelectRec, *CFF_FDSelect; | |
201 | |
202 | |
203 /* A SubFont packs a font dict and a private dict together. They are */ | |
204 /* needed to support CID-keyed CFF fonts. */ | |
205 typedef struct CFF_SubFontRec_ | |
206 { | |
207 CFF_FontRecDictRec font_dict; | |
208 CFF_PrivateRec private_dict; | |
209 | |
210 CFF_IndexRec local_subrs_index; | |
211 FT_Byte** local_subrs; /* array of pointers into Local Subrs INDEX
data */ | |
212 | |
213 } CFF_SubFontRec, *CFF_SubFont; | |
214 | |
215 | |
216 #define CFF_MAX_CID_FONTS 256 | |
217 | |
218 | |
219 typedef struct CFF_FontRec_ | |
220 { | |
221 FT_Stream stream; | |
222 FT_Memory memory; | |
223 FT_UInt num_faces; | |
224 FT_UInt num_glyphs; | |
225 | |
226 FT_Byte version_major; | |
227 FT_Byte version_minor; | |
228 FT_Byte header_size; | |
229 FT_Byte absolute_offsize; | |
230 | |
231 | |
232 CFF_IndexRec name_index; | |
233 CFF_IndexRec top_dict_index; | |
234 CFF_IndexRec global_subrs_index; | |
235 | |
236 CFF_EncodingRec encoding; | |
237 CFF_CharsetRec charset; | |
238 | |
239 CFF_IndexRec charstrings_index; | |
240 CFF_IndexRec font_dict_index; | |
241 CFF_IndexRec private_index; | |
242 CFF_IndexRec local_subrs_index; | |
243 | |
244 FT_String* font_name; | |
245 | |
246 /* array of pointers into Global Subrs INDEX data */ | |
247 FT_Byte** global_subrs; | |
248 | |
249 /* array of pointers into String INDEX data stored at string_pool */ | |
250 FT_UInt num_strings; | |
251 FT_Byte** strings; | |
252 FT_Byte* string_pool; | |
253 | |
254 CFF_SubFontRec top_font; | |
255 FT_UInt num_subfonts; | |
256 CFF_SubFont subfonts[CFF_MAX_CID_FONTS]; | |
257 | |
258 CFF_FDSelectRec fd_select; | |
259 | |
260 /* interface to PostScript hinter */ | |
261 PSHinter_Service pshinter; | |
262 | |
263 /* interface to Postscript Names service */ | |
264 FT_Service_PsCMaps psnames; | |
265 | |
266 /* since version 2.3.0 */ | |
267 PS_FontInfoRec* font_info; /* font info dictionary */ | |
268 | |
269 /* since version 2.3.6 */ | |
270 FT_String* registry; | |
271 FT_String* ordering; | |
272 | |
273 /* since version 2.4.12 */ | |
274 FT_Generic cf2_instance; | |
275 | |
276 } CFF_FontRec, *CFF_Font; | |
277 | |
278 | |
279 FT_END_HEADER | |
280 | |
281 #endif /* __CFFTYPES_H__ */ | |
282 | |
283 | |
284 /* END */ | |
OLD | NEW |