Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4349 | Serge | 1 | /***************************************************************************/ |
2 | /* */ |
||
3 | /* pfrtypes.h */ |
||
4 | /* */ |
||
5 | /* FreeType PFR data structures (specification only). */ |
||
6 | /* */ |
||
7 | /* Copyright 2002, 2003, 2005, 2007 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 __PFRTYPES_H__ |
||
20 | #define __PFRTYPES_H__ |
||
21 | |||
22 | #include |
||
23 | #include FT_INTERNAL_OBJECTS_H |
||
24 | |||
25 | FT_BEGIN_HEADER |
||
26 | |||
27 | /************************************************************************/ |
||
28 | |||
29 | /* the PFR Header structure */ |
||
30 | typedef struct PFR_HeaderRec_ |
||
31 | { |
||
32 | FT_UInt32 signature; |
||
33 | FT_UInt version; |
||
34 | FT_UInt signature2; |
||
35 | FT_UInt header_size; |
||
36 | |||
37 | FT_UInt log_dir_size; |
||
38 | FT_UInt log_dir_offset; |
||
39 | |||
40 | FT_UInt log_font_max_size; |
||
41 | FT_UInt32 log_font_section_size; |
||
42 | FT_UInt32 log_font_section_offset; |
||
43 | |||
44 | FT_UInt32 phy_font_max_size; |
||
45 | FT_UInt32 phy_font_section_size; |
||
46 | FT_UInt32 phy_font_section_offset; |
||
47 | |||
48 | FT_UInt gps_max_size; |
||
49 | FT_UInt32 gps_section_size; |
||
50 | FT_UInt32 gps_section_offset; |
||
51 | |||
52 | FT_UInt max_blue_values; |
||
53 | FT_UInt max_x_orus; |
||
54 | FT_UInt max_y_orus; |
||
55 | |||
56 | FT_UInt phy_font_max_size_high; |
||
57 | FT_UInt color_flags; |
||
58 | |||
59 | FT_UInt32 bct_max_size; |
||
60 | FT_UInt32 bct_set_max_size; |
||
61 | FT_UInt32 phy_bct_set_max_size; |
||
62 | |||
63 | FT_UInt num_phy_fonts; |
||
64 | FT_UInt max_vert_stem_snap; |
||
65 | FT_UInt max_horz_stem_snap; |
||
66 | FT_UInt max_chars; |
||
67 | |||
68 | } PFR_HeaderRec, *PFR_Header; |
||
69 | |||
70 | |||
71 | /* used in `color_flags' field of the PFR_Header */ |
||
72 | typedef enum PFR_HeaderFlags_ |
||
73 | { |
||
74 | PFR_FLAG_BLACK_PIXEL = 1, |
||
75 | PFR_FLAG_INVERT_BITMAP = 2 |
||
76 | |||
77 | } PFR_HeaderFlags; |
||
78 | |||
79 | |||
80 | /************************************************************************/ |
||
81 | |||
82 | typedef struct PFR_LogFontRec_ |
||
83 | { |
||
84 | FT_UInt32 size; |
||
85 | FT_UInt32 offset; |
||
86 | |||
87 | FT_Int32 matrix[4]; |
||
88 | FT_UInt stroke_flags; |
||
89 | FT_Int stroke_thickness; |
||
90 | FT_Int bold_thickness; |
||
91 | FT_Int32 miter_limit; |
||
92 | |||
93 | FT_UInt32 phys_size; |
||
94 | FT_UInt32 phys_offset; |
||
95 | |||
96 | } PFR_LogFontRec, *PFR_LogFont; |
||
97 | |||
98 | |||
99 | typedef enum PFR_LogFlags_ |
||
100 | { |
||
101 | PFR_LOG_EXTRA_ITEMS = 0x40, |
||
102 | PFR_LOG_2BYTE_BOLD = 0x20, |
||
103 | PFR_LOG_BOLD = 0x10, |
||
104 | PFR_LOG_2BYTE_STROKE = 8, |
||
105 | PFR_LOG_STROKE = 4, |
||
106 | PFR_LINE_JOIN_MASK = 3 |
||
107 | |||
108 | } PFR_LogFlags; |
||
109 | |||
110 | |||
111 | typedef enum PFR_LineJoinFlags_ |
||
112 | { |
||
113 | PFR_LINE_JOIN_MITER = 0, |
||
114 | PFR_LINE_JOIN_ROUND = 1, |
||
115 | PFR_LINE_JOIN_BEVEL = 2 |
||
116 | |||
117 | } PFR_LineJoinFlags; |
||
118 | |||
119 | |||
120 | /************************************************************************/ |
||
121 | |||
122 | typedef enum PFR_BitmapFlags_ |
||
123 | { |
||
124 | PFR_BITMAP_3BYTE_OFFSET = 4, |
||
125 | PFR_BITMAP_2BYTE_SIZE = 2, |
||
126 | PFR_BITMAP_2BYTE_CHARCODE = 1 |
||
127 | |||
128 | } PFR_BitmapFlags; |
||
129 | |||
130 | |||
131 | typedef struct PFR_BitmapCharRec_ |
||
132 | { |
||
133 | FT_UInt char_code; |
||
134 | FT_UInt gps_size; |
||
135 | FT_UInt32 gps_offset; |
||
136 | |||
137 | } PFR_BitmapCharRec, *PFR_BitmapChar; |
||
138 | |||
139 | |||
140 | typedef enum PFR_StrikeFlags_ |
||
141 | { |
||
142 | PFR_STRIKE_2BYTE_COUNT = 0x10, |
||
143 | PFR_STRIKE_3BYTE_OFFSET = 0x08, |
||
144 | PFR_STRIKE_3BYTE_SIZE = 0x04, |
||
145 | PFR_STRIKE_2BYTE_YPPM = 0x02, |
||
146 | PFR_STRIKE_2BYTE_XPPM = 0x01 |
||
147 | |||
148 | } PFR_StrikeFlags; |
||
149 | |||
150 | |||
151 | typedef struct PFR_StrikeRec_ |
||
152 | { |
||
153 | FT_UInt x_ppm; |
||
154 | FT_UInt y_ppm; |
||
155 | FT_UInt flags; |
||
156 | |||
157 | FT_UInt32 gps_size; |
||
158 | FT_UInt32 gps_offset; |
||
159 | |||
160 | FT_UInt32 bct_size; |
||
161 | FT_UInt32 bct_offset; |
||
162 | |||
163 | /* optional */ |
||
164 | FT_UInt num_bitmaps; |
||
165 | PFR_BitmapChar bitmaps; |
||
166 | |||
167 | } PFR_StrikeRec, *PFR_Strike; |
||
168 | |||
169 | |||
170 | /************************************************************************/ |
||
171 | |||
172 | typedef struct PFR_CharRec_ |
||
173 | { |
||
174 | FT_UInt char_code; |
||
175 | FT_Int advance; |
||
176 | FT_UInt gps_size; |
||
177 | FT_UInt32 gps_offset; |
||
178 | |||
179 | } PFR_CharRec, *PFR_Char; |
||
180 | |||
181 | |||
182 | /************************************************************************/ |
||
183 | |||
184 | typedef struct PFR_DimensionRec_ |
||
185 | { |
||
186 | FT_UInt standard; |
||
187 | FT_UInt num_stem_snaps; |
||
188 | FT_Int* stem_snaps; |
||
189 | |||
190 | } PFR_DimensionRec, *PFR_Dimension; |
||
191 | |||
192 | /************************************************************************/ |
||
193 | |||
194 | typedef struct PFR_KernItemRec_* PFR_KernItem; |
||
195 | |||
196 | typedef struct PFR_KernItemRec_ |
||
197 | { |
||
198 | PFR_KernItem next; |
||
199 | FT_Byte pair_count; |
||
200 | FT_Byte flags; |
||
201 | FT_Short base_adj; |
||
202 | FT_UInt pair_size; |
||
203 | FT_Offset offset; |
||
204 | FT_UInt32 pair1; |
||
205 | FT_UInt32 pair2; |
||
206 | |||
207 | } PFR_KernItemRec; |
||
208 | |||
209 | |||
210 | #define PFR_KERN_INDEX( g1, g2 ) \ |
||
211 | ( ( (FT_UInt32)(g1) << 16 ) | (FT_UInt16)(g2) ) |
||
212 | |||
213 | #define PFR_KERN_PAIR_INDEX( pair ) \ |
||
214 | PFR_KERN_INDEX( (pair)->glyph1, (pair)->glyph2 ) |
||
215 | |||
216 | #define PFR_NEXT_KPAIR( p ) ( p += 2, \ |
||
217 | ( (FT_UInt32)p[-2] << 16 ) | p[-1] ) |
||
218 | |||
219 | |||
220 | /************************************************************************/ |
||
221 | |||
222 | typedef struct PFR_PhyFontRec_ |
||
223 | { |
||
224 | FT_Memory memory; |
||
225 | FT_UInt32 offset; |
||
226 | |||
227 | FT_UInt font_ref_number; |
||
228 | FT_UInt outline_resolution; |
||
229 | FT_UInt metrics_resolution; |
||
230 | FT_BBox bbox; |
||
231 | FT_UInt flags; |
||
232 | FT_UInt standard_advance; |
||
233 | |||
234 | FT_Int ascent; /* optional, bbox.yMax if not present */ |
||
235 | FT_Int descent; /* optional, bbox.yMin if not present */ |
||
236 | FT_Int leading; /* optional, 0 if not present */ |
||
237 | |||
238 | PFR_DimensionRec horizontal; |
||
239 | PFR_DimensionRec vertical; |
||
240 | |||
241 | FT_String* font_id; |
||
242 | FT_String* family_name; |
||
243 | FT_String* style_name; |
||
244 | |||
245 | FT_UInt num_strikes; |
||
246 | FT_UInt max_strikes; |
||
247 | PFR_StrikeRec* strikes; |
||
248 | |||
249 | FT_UInt num_blue_values; |
||
250 | FT_Int *blue_values; |
||
251 | FT_UInt blue_fuzz; |
||
252 | FT_UInt blue_scale; |
||
253 | |||
254 | FT_UInt num_chars; |
||
255 | FT_Offset chars_offset; |
||
256 | PFR_Char chars; |
||
257 | |||
258 | FT_UInt num_kern_pairs; |
||
259 | PFR_KernItem kern_items; |
||
260 | PFR_KernItem* kern_items_tail; |
||
261 | |||
262 | /* not part of the spec, but used during load */ |
||
263 | FT_Long bct_offset; |
||
264 | FT_Byte* cursor; |
||
265 | |||
266 | } PFR_PhyFontRec, *PFR_PhyFont; |
||
267 | |||
268 | |||
269 | typedef enum PFR_PhyFlags_ |
||
270 | { |
||
271 | PFR_PHY_EXTRA_ITEMS = 0x80, |
||
272 | PFR_PHY_3BYTE_GPS_OFFSET = 0x20, |
||
273 | PFR_PHY_2BYTE_GPS_SIZE = 0x10, |
||
274 | PFR_PHY_ASCII_CODE = 0x08, |
||
275 | PFR_PHY_PROPORTIONAL = 0x04, |
||
276 | PFR_PHY_2BYTE_CHARCODE = 0x02, |
||
277 | PFR_PHY_VERTICAL = 0x01 |
||
278 | |||
279 | } PFR_PhyFlags; |
||
280 | |||
281 | |||
282 | typedef enum PFR_KernFlags_ |
||
283 | { |
||
284 | PFR_KERN_2BYTE_CHAR = 0x01, |
||
285 | PFR_KERN_2BYTE_ADJ = 0x02 |
||
286 | |||
287 | } PFR_KernFlags; |
||
288 | |||
289 | |||
290 | /************************************************************************/ |
||
291 | |||
292 | typedef enum PFR_GlyphFlags_ |
||
293 | { |
||
294 | PFR_GLYPH_IS_COMPOUND = 0x80, |
||
295 | PFR_GLYPH_EXTRA_ITEMS = 0x08, |
||
296 | PFR_GLYPH_1BYTE_XYCOUNT = 0x04, |
||
297 | PFR_GLYPH_XCOUNT = 0x02, |
||
298 | PFR_GLYPH_YCOUNT = 0x01 |
||
299 | |||
300 | } PFR_GlyphFlags; |
||
301 | |||
302 | |||
303 | /* controlled coordinate */ |
||
304 | typedef struct PFR_CoordRec_ |
||
305 | { |
||
306 | FT_UInt org; |
||
307 | FT_UInt cur; |
||
308 | |||
309 | } PFR_CoordRec, *PFR_Coord; |
||
310 | |||
311 | |||
312 | typedef struct PFR_SubGlyphRec_ |
||
313 | { |
||
314 | FT_Fixed x_scale; |
||
315 | FT_Fixed y_scale; |
||
316 | FT_Int x_delta; |
||
317 | FT_Int y_delta; |
||
318 | FT_UInt32 gps_offset; |
||
319 | FT_UInt gps_size; |
||
320 | |||
321 | } PFR_SubGlyphRec, *PFR_SubGlyph; |
||
322 | |||
323 | |||
324 | typedef enum PFR_SubgGlyphFlags_ |
||
325 | { |
||
326 | PFR_SUBGLYPH_3BYTE_OFFSET = 0x80, |
||
327 | PFR_SUBGLYPH_2BYTE_SIZE = 0x40, |
||
328 | PFR_SUBGLYPH_YSCALE = 0x20, |
||
329 | PFR_SUBGLYPH_XSCALE = 0x10 |
||
330 | |||
331 | } PFR_SubGlyphFlags; |
||
332 | |||
333 | |||
334 | typedef struct PFR_GlyphRec_ |
||
335 | { |
||
336 | FT_Byte format; |
||
337 | |||
338 | #if 0 |
||
339 | FT_UInt num_x_control; |
||
340 | FT_UInt num_y_control; |
||
341 | #endif |
||
342 | FT_UInt max_xy_control; |
||
343 | FT_Pos* x_control; |
||
344 | FT_Pos* y_control; |
||
345 | |||
346 | |||
347 | FT_UInt num_subs; |
||
348 | FT_UInt max_subs; |
||
349 | PFR_SubGlyphRec* subs; |
||
350 | |||
351 | FT_GlyphLoader loader; |
||
352 | FT_Bool path_begun; |
||
353 | |||
354 | } PFR_GlyphRec, *PFR_Glyph; |
||
355 | |||
356 | |||
357 | FT_END_HEADER |
||
358 | |||
359 | #endif /* __PFRTYPES_H__ */ |
||
360 | |||
361 | |||
362 | /* END */><>><> |