rev |
line source |
nuclear@0
|
1 /***************************************************************************/
|
nuclear@0
|
2 /* */
|
nuclear@0
|
3 /* t1types.h */
|
nuclear@0
|
4 /* */
|
nuclear@0
|
5 /* Basic Type1/Type2 type definitions and interface (specification */
|
nuclear@0
|
6 /* only). */
|
nuclear@0
|
7 /* */
|
nuclear@0
|
8 /* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */
|
nuclear@0
|
9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
nuclear@0
|
10 /* */
|
nuclear@0
|
11 /* This file is part of the FreeType project, and may only be used, */
|
nuclear@0
|
12 /* modified, and distributed under the terms of the FreeType project */
|
nuclear@0
|
13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
nuclear@0
|
14 /* this file you indicate that you have read the license and */
|
nuclear@0
|
15 /* understand and accept it fully. */
|
nuclear@0
|
16 /* */
|
nuclear@0
|
17 /***************************************************************************/
|
nuclear@0
|
18
|
nuclear@0
|
19
|
nuclear@0
|
20 #ifndef __T1TYPES_H__
|
nuclear@0
|
21 #define __T1TYPES_H__
|
nuclear@0
|
22
|
nuclear@0
|
23
|
nuclear@0
|
24 #include <ft2build.h>
|
nuclear@0
|
25 #include FT_TYPE1_TABLES_H
|
nuclear@0
|
26 #include FT_INTERNAL_POSTSCRIPT_HINTS_H
|
nuclear@0
|
27 #include FT_INTERNAL_SERVICE_H
|
nuclear@0
|
28 #include FT_SERVICE_POSTSCRIPT_CMAPS_H
|
nuclear@0
|
29
|
nuclear@0
|
30
|
nuclear@0
|
31 FT_BEGIN_HEADER
|
nuclear@0
|
32
|
nuclear@0
|
33
|
nuclear@0
|
34 /*************************************************************************/
|
nuclear@0
|
35 /*************************************************************************/
|
nuclear@0
|
36 /*************************************************************************/
|
nuclear@0
|
37 /*** ***/
|
nuclear@0
|
38 /*** ***/
|
nuclear@0
|
39 /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/
|
nuclear@0
|
40 /*** ***/
|
nuclear@0
|
41 /*** ***/
|
nuclear@0
|
42 /*************************************************************************/
|
nuclear@0
|
43 /*************************************************************************/
|
nuclear@0
|
44 /*************************************************************************/
|
nuclear@0
|
45
|
nuclear@0
|
46
|
nuclear@0
|
47 /*************************************************************************/
|
nuclear@0
|
48 /* */
|
nuclear@0
|
49 /* <Struct> */
|
nuclear@0
|
50 /* T1_EncodingRec */
|
nuclear@0
|
51 /* */
|
nuclear@0
|
52 /* <Description> */
|
nuclear@0
|
53 /* A structure modeling a custom encoding. */
|
nuclear@0
|
54 /* */
|
nuclear@0
|
55 /* <Fields> */
|
nuclear@0
|
56 /* num_chars :: The number of character codes in the encoding. */
|
nuclear@0
|
57 /* Usually 256. */
|
nuclear@0
|
58 /* */
|
nuclear@0
|
59 /* code_first :: The lowest valid character code in the encoding. */
|
nuclear@0
|
60 /* */
|
nuclear@0
|
61 /* code_last :: The highest valid character code in the encoding */
|
nuclear@0
|
62 /* + 1. When equal to code_first there are no valid */
|
nuclear@0
|
63 /* character codes. */
|
nuclear@0
|
64 /* */
|
nuclear@0
|
65 /* char_index :: An array of corresponding glyph indices. */
|
nuclear@0
|
66 /* */
|
nuclear@0
|
67 /* char_name :: An array of corresponding glyph names. */
|
nuclear@0
|
68 /* */
|
nuclear@0
|
69 typedef struct T1_EncodingRecRec_
|
nuclear@0
|
70 {
|
nuclear@0
|
71 FT_Int num_chars;
|
nuclear@0
|
72 FT_Int code_first;
|
nuclear@0
|
73 FT_Int code_last;
|
nuclear@0
|
74
|
nuclear@0
|
75 FT_UShort* char_index;
|
nuclear@0
|
76 FT_String** char_name;
|
nuclear@0
|
77
|
nuclear@0
|
78 } T1_EncodingRec, *T1_Encoding;
|
nuclear@0
|
79
|
nuclear@0
|
80
|
nuclear@0
|
81 typedef enum T1_EncodingType_
|
nuclear@0
|
82 {
|
nuclear@0
|
83 T1_ENCODING_TYPE_NONE = 0,
|
nuclear@0
|
84 T1_ENCODING_TYPE_ARRAY,
|
nuclear@0
|
85 T1_ENCODING_TYPE_STANDARD,
|
nuclear@0
|
86 T1_ENCODING_TYPE_ISOLATIN1,
|
nuclear@0
|
87 T1_ENCODING_TYPE_EXPERT
|
nuclear@0
|
88
|
nuclear@0
|
89 } T1_EncodingType;
|
nuclear@0
|
90
|
nuclear@0
|
91
|
nuclear@0
|
92 /* used to hold extra data of PS_FontInfoRec that
|
nuclear@0
|
93 * cannot be stored in the publicly defined structure.
|
nuclear@0
|
94 *
|
nuclear@0
|
95 * Note these can't be blended with multiple-masters.
|
nuclear@0
|
96 */
|
nuclear@0
|
97 typedef struct PS_FontExtraRec_
|
nuclear@0
|
98 {
|
nuclear@0
|
99 FT_UShort fs_type;
|
nuclear@0
|
100
|
nuclear@0
|
101 } PS_FontExtraRec;
|
nuclear@0
|
102
|
nuclear@0
|
103
|
nuclear@0
|
104 typedef struct T1_FontRec_
|
nuclear@0
|
105 {
|
nuclear@0
|
106 PS_FontInfoRec font_info; /* font info dictionary */
|
nuclear@0
|
107 PS_FontExtraRec font_extra; /* font info extra fields */
|
nuclear@0
|
108 PS_PrivateRec private_dict; /* private dictionary */
|
nuclear@0
|
109 FT_String* font_name; /* top-level dictionary */
|
nuclear@0
|
110
|
nuclear@0
|
111 T1_EncodingType encoding_type;
|
nuclear@0
|
112 T1_EncodingRec encoding;
|
nuclear@0
|
113
|
nuclear@0
|
114 FT_Byte* subrs_block;
|
nuclear@0
|
115 FT_Byte* charstrings_block;
|
nuclear@0
|
116 FT_Byte* glyph_names_block;
|
nuclear@0
|
117
|
nuclear@0
|
118 FT_Int num_subrs;
|
nuclear@0
|
119 FT_Byte** subrs;
|
nuclear@0
|
120 FT_PtrDist* subrs_len;
|
nuclear@0
|
121
|
nuclear@0
|
122 FT_Int num_glyphs;
|
nuclear@0
|
123 FT_String** glyph_names; /* array of glyph names */
|
nuclear@0
|
124 FT_Byte** charstrings; /* array of glyph charstrings */
|
nuclear@0
|
125 FT_PtrDist* charstrings_len;
|
nuclear@0
|
126
|
nuclear@0
|
127 FT_Byte paint_type;
|
nuclear@0
|
128 FT_Byte font_type;
|
nuclear@0
|
129 FT_Matrix font_matrix;
|
nuclear@0
|
130 FT_Vector font_offset;
|
nuclear@0
|
131 FT_BBox font_bbox;
|
nuclear@0
|
132 FT_Long font_id;
|
nuclear@0
|
133
|
nuclear@0
|
134 FT_Fixed stroke_width;
|
nuclear@0
|
135
|
nuclear@0
|
136 } T1_FontRec, *T1_Font;
|
nuclear@0
|
137
|
nuclear@0
|
138
|
nuclear@0
|
139 typedef struct CID_SubrsRec_
|
nuclear@0
|
140 {
|
nuclear@0
|
141 FT_UInt num_subrs;
|
nuclear@0
|
142 FT_Byte** code;
|
nuclear@0
|
143
|
nuclear@0
|
144 } CID_SubrsRec, *CID_Subrs;
|
nuclear@0
|
145
|
nuclear@0
|
146
|
nuclear@0
|
147 /*************************************************************************/
|
nuclear@0
|
148 /*************************************************************************/
|
nuclear@0
|
149 /*************************************************************************/
|
nuclear@0
|
150 /*** ***/
|
nuclear@0
|
151 /*** ***/
|
nuclear@0
|
152 /*** AFM FONT INFORMATION STRUCTURES ***/
|
nuclear@0
|
153 /*** ***/
|
nuclear@0
|
154 /*** ***/
|
nuclear@0
|
155 /*************************************************************************/
|
nuclear@0
|
156 /*************************************************************************/
|
nuclear@0
|
157 /*************************************************************************/
|
nuclear@0
|
158
|
nuclear@0
|
159 typedef struct AFM_TrackKernRec_
|
nuclear@0
|
160 {
|
nuclear@0
|
161 FT_Int degree;
|
nuclear@0
|
162 FT_Fixed min_ptsize;
|
nuclear@0
|
163 FT_Fixed min_kern;
|
nuclear@0
|
164 FT_Fixed max_ptsize;
|
nuclear@0
|
165 FT_Fixed max_kern;
|
nuclear@0
|
166
|
nuclear@0
|
167 } AFM_TrackKernRec, *AFM_TrackKern;
|
nuclear@0
|
168
|
nuclear@0
|
169 typedef struct AFM_KernPairRec_
|
nuclear@0
|
170 {
|
nuclear@0
|
171 FT_Int index1;
|
nuclear@0
|
172 FT_Int index2;
|
nuclear@0
|
173 FT_Int x;
|
nuclear@0
|
174 FT_Int y;
|
nuclear@0
|
175
|
nuclear@0
|
176 } AFM_KernPairRec, *AFM_KernPair;
|
nuclear@0
|
177
|
nuclear@0
|
178 typedef struct AFM_FontInfoRec_
|
nuclear@0
|
179 {
|
nuclear@0
|
180 FT_Bool IsCIDFont;
|
nuclear@0
|
181 FT_BBox FontBBox;
|
nuclear@0
|
182 FT_Fixed Ascender;
|
nuclear@0
|
183 FT_Fixed Descender;
|
nuclear@0
|
184 AFM_TrackKern TrackKerns; /* free if non-NULL */
|
nuclear@0
|
185 FT_Int NumTrackKern;
|
nuclear@0
|
186 AFM_KernPair KernPairs; /* free if non-NULL */
|
nuclear@0
|
187 FT_Int NumKernPair;
|
nuclear@0
|
188
|
nuclear@0
|
189 } AFM_FontInfoRec, *AFM_FontInfo;
|
nuclear@0
|
190
|
nuclear@0
|
191
|
nuclear@0
|
192 /*************************************************************************/
|
nuclear@0
|
193 /*************************************************************************/
|
nuclear@0
|
194 /*************************************************************************/
|
nuclear@0
|
195 /*** ***/
|
nuclear@0
|
196 /*** ***/
|
nuclear@0
|
197 /*** ORIGINAL T1_FACE CLASS DEFINITION ***/
|
nuclear@0
|
198 /*** ***/
|
nuclear@0
|
199 /*** ***/
|
nuclear@0
|
200 /*************************************************************************/
|
nuclear@0
|
201 /*************************************************************************/
|
nuclear@0
|
202 /*************************************************************************/
|
nuclear@0
|
203
|
nuclear@0
|
204
|
nuclear@0
|
205 typedef struct T1_FaceRec_* T1_Face;
|
nuclear@0
|
206 typedef struct CID_FaceRec_* CID_Face;
|
nuclear@0
|
207
|
nuclear@0
|
208
|
nuclear@0
|
209 typedef struct T1_FaceRec_
|
nuclear@0
|
210 {
|
nuclear@0
|
211 FT_FaceRec root;
|
nuclear@0
|
212 T1_FontRec type1;
|
nuclear@0
|
213 const void* psnames;
|
nuclear@0
|
214 const void* psaux;
|
nuclear@0
|
215 const void* afm_data;
|
nuclear@0
|
216 FT_CharMapRec charmaprecs[2];
|
nuclear@0
|
217 FT_CharMap charmaps[2];
|
nuclear@0
|
218
|
nuclear@0
|
219 #ifdef FT_CONFIG_OPTION_OLD_INTERNALS
|
nuclear@0
|
220 PS_Unicodes unicode_map;
|
nuclear@0
|
221 #endif
|
nuclear@0
|
222
|
nuclear@0
|
223 /* support for Multiple Masters fonts */
|
nuclear@0
|
224 PS_Blend blend;
|
nuclear@0
|
225
|
nuclear@0
|
226 /* undocumented, optional: indices of subroutines that express */
|
nuclear@0
|
227 /* the NormalizeDesignVector and the ConvertDesignVector procedure, */
|
nuclear@0
|
228 /* respectively, as Type 2 charstrings; -1 if keywords not present */
|
nuclear@0
|
229 FT_Int ndv_idx;
|
nuclear@0
|
230 FT_Int cdv_idx;
|
nuclear@0
|
231
|
nuclear@0
|
232 /* undocumented, optional: has the same meaning as len_buildchar */
|
nuclear@0
|
233 /* for Type 2 fonts; manipulated by othersubrs 19, 24, and 25 */
|
nuclear@0
|
234 FT_UInt len_buildchar;
|
nuclear@0
|
235 FT_Long* buildchar;
|
nuclear@0
|
236
|
nuclear@0
|
237 /* since version 2.1 - interface to PostScript hinter */
|
nuclear@0
|
238 const void* pshinter;
|
nuclear@0
|
239
|
nuclear@0
|
240 } T1_FaceRec;
|
nuclear@0
|
241
|
nuclear@0
|
242
|
nuclear@0
|
243 typedef struct CID_FaceRec_
|
nuclear@0
|
244 {
|
nuclear@0
|
245 FT_FaceRec root;
|
nuclear@0
|
246 void* psnames;
|
nuclear@0
|
247 void* psaux;
|
nuclear@0
|
248 CID_FaceInfoRec cid;
|
nuclear@0
|
249 PS_FontExtraRec font_extra;
|
nuclear@0
|
250 #if 0
|
nuclear@0
|
251 void* afm_data;
|
nuclear@0
|
252 #endif
|
nuclear@0
|
253 CID_Subrs subrs;
|
nuclear@0
|
254
|
nuclear@0
|
255 /* since version 2.1 - interface to PostScript hinter */
|
nuclear@0
|
256 void* pshinter;
|
nuclear@0
|
257
|
nuclear@0
|
258 /* since version 2.1.8, but was originally positioned after `afm_data' */
|
nuclear@0
|
259 FT_Byte* binary_data; /* used if hex data has been converted */
|
nuclear@0
|
260 FT_Stream cid_stream;
|
nuclear@0
|
261
|
nuclear@0
|
262 } CID_FaceRec;
|
nuclear@0
|
263
|
nuclear@0
|
264
|
nuclear@0
|
265 FT_END_HEADER
|
nuclear@0
|
266
|
nuclear@0
|
267 #endif /* __T1TYPES_H__ */
|
nuclear@0
|
268
|
nuclear@0
|
269
|
nuclear@0
|
270 /* END */
|