]>
Commit | Line | Data |
---|---|---|
b75a7d8f A |
1 | |
2 | /* | |
b75a7d8f | 3 | * |
374ca955 | 4 | * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved |
b75a7d8f A |
5 | * |
6 | */ | |
7 | ||
8 | #ifndef __LETYPES_H | |
9 | #define __LETYPES_H | |
10 | ||
374ca955 | 11 | #if !defined(LE_USE_CMEMORY) && (defined(U_LAYOUT_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || defined(U_STATIC_IMPLEMENTATION) || defined(U_COMBINED_IMPLEMENTATION)) |
b75a7d8f A |
12 | #define LE_USE_CMEMORY |
13 | #endif | |
14 | ||
15 | #include "unicode/utypes.h" | |
16 | #include "unicode/uobject.h" | |
17 | ||
18 | #ifdef LE_USE_CMEMORY | |
19 | #include "cmemory.h" | |
20 | #endif | |
21 | ||
22 | U_NAMESPACE_BEGIN | |
23 | ||
24 | /** | |
25 | * A type used for signed, 32-bit integers. | |
26 | * | |
27 | * @stable ICU 2.4 | |
28 | */ | |
29 | typedef int32_t le_int32; | |
30 | ||
31 | /** | |
32 | * A type used for unsigned, 32-bit integers. | |
33 | * | |
34 | * @stable ICU 2.4 | |
35 | */ | |
36 | typedef uint32_t le_uint32; | |
37 | ||
38 | /** | |
39 | * A type used for signed, 16-bit integers. | |
40 | * | |
41 | * @stable ICU 2.4 | |
42 | */ | |
43 | typedef int16_t le_int16; | |
44 | ||
45 | /** | |
46 | * A type used for unsigned, 16-bit integers. | |
47 | * | |
48 | * @stable ICU 2.4 | |
49 | */ | |
50 | typedef uint16_t le_uint16; | |
51 | ||
52 | /** | |
53 | * A type used for signed, 8-bit integers. | |
54 | * | |
55 | * @stable ICU 2.4 | |
56 | */ | |
57 | typedef int8_t le_int8; | |
58 | ||
59 | /** | |
60 | * A type used for unsigned, 8-bit integers. | |
61 | * | |
62 | * @stable ICU 2.4 | |
63 | */ | |
64 | typedef uint8_t le_uint8; | |
65 | ||
66 | ||
67 | /** | |
68 | * A type used for boolean values. | |
69 | * | |
70 | * @stable ICU 2.4 | |
71 | */ | |
72 | typedef UBool le_bool; | |
73 | ||
b75a7d8f A |
74 | #ifndef NULL |
75 | /** | |
76 | * Used to represent empty pointers. | |
77 | * | |
78 | * @stable ICU 2.4 | |
79 | */ | |
80 | #define NULL 0 | |
81 | #endif | |
82 | ||
83 | /** | |
84 | * Used for four character tags. | |
85 | * | |
86 | * @stable ICU 2.4 | |
87 | */ | |
88 | typedef le_uint32 LETag; | |
89 | ||
90 | /** | |
91 | * Used for 16-bit glyph indices as they're represented | |
92 | * in TrueType font tables. | |
93 | * | |
94 | * @draft ICU 2.6 | |
95 | */ | |
96 | typedef le_uint16 TTGlyphID; | |
97 | ||
98 | /** | |
99 | * Used for glyph indices. The low-order 16 bits are | |
100 | * the glyph ID within the font. The next 8 bits are | |
101 | * the sub-font ID within a compound font. The high- | |
102 | * order 8 bits are client defined. The LayoutEngine | |
103 | * will never change or look at the client defined bits. | |
104 | * | |
105 | * @draft ICU 2.6 | |
106 | */ | |
107 | typedef le_uint32 LEGlyphID; | |
108 | ||
109 | /** | |
110 | * Used to mask off the glyph ID part of an LEGlyphID. | |
111 | * | |
112 | * @see LEGlyphID | |
113 | * @draft ICU 2.6 | |
114 | */ | |
115 | #define LE_GLYPH_MASK 0x0000FFFF | |
116 | ||
117 | /** | |
118 | * Used to shift the glyph ID part of an LEGlyphID | |
119 | * into the low-order bits. | |
120 | * | |
121 | * @see LEGlyphID | |
122 | * @draft ICU 2.6 | |
123 | */ | |
124 | #define LE_GLYPH_SHIFT 0 | |
125 | ||
126 | ||
127 | /** | |
128 | * Used to mask off the sub-font ID part of an LEGlyphID. | |
129 | * | |
130 | * @see LEGlyphID | |
131 | * @draft ICU 2.6 | |
132 | */ | |
133 | #define LE_SUB_FONT_MASK 0x00FF0000 | |
134 | ||
135 | /** | |
136 | * Used to shift the sub-font ID part of an LEGlyphID | |
137 | * into the low-order bits. | |
138 | * | |
139 | * @see LEGlyphID | |
140 | * @draft ICU 2.6 | |
141 | */ | |
142 | #define LE_SUB_FONT_SHIFT 16 | |
143 | ||
144 | ||
145 | /** | |
146 | * Used to mask off the client-defined part of an LEGlyphID. | |
147 | * | |
148 | * @see LEGlyphID | |
149 | * @draft ICU 2.6 | |
150 | */ | |
151 | #define LE_CLIENT_MASK 0xFF000000 | |
152 | ||
153 | /** | |
154 | * Used to shift the sub-font ID part of an LEGlyphID | |
155 | * into the low-order bits. | |
156 | * | |
157 | * @see LEGlyphID | |
158 | * @draft ICU 2.6 | |
159 | */ | |
160 | #define LE_CLIENT_SHIFT 24 | |
161 | ||
162 | ||
163 | /** | |
164 | * A convenience macro to get the Glyph ID part of an LEGlyphID. | |
165 | * | |
166 | * @see LEGlyphID | |
167 | * @draft ICU 2.6 | |
168 | */ | |
169 | #define LE_GET_GLYPH(gid) ((gid & LE_GLYPH_MASK) >> LE_GLYPH_SHIFT) | |
170 | ||
171 | /** | |
172 | * A convenience macro to get the sub-font ID part of an LEGlyphID. | |
173 | * | |
174 | * @see LEGlyphID | |
175 | * @draft ICU 2.6 | |
176 | */ | |
177 | #define LE_GET_SUB_FONT(gid) ((gid & LE_SUB_FONT_MASK) >> LE_SUB_FONT_SHIFT) | |
178 | ||
179 | /** | |
180 | * A convenience macro to get the client-defined part of an LEGlyphID. | |
181 | * | |
182 | * @see LEGlyphID | |
183 | * @draft ICU 2.6 | |
184 | */ | |
185 | #define LE_GET_CLIENT(gid) ((gid & LE_CLIENT_MASK) >> LE_CLIENT_SHIFT) | |
186 | ||
187 | ||
188 | /** | |
189 | * A convenience macro to set the Glyph ID part of an LEGlyphID. | |
190 | * | |
191 | * @see LEGlyphID | |
192 | * @draft ICU 2.6 | |
193 | */ | |
194 | #define LE_SET_GLYPH(gid, glyph) ((gid & ~LE_GLYPH_MASK) | ((glyph << LE_GLYPH_SHIFT) & LE_GLYPH_MASK)) | |
195 | ||
196 | /** | |
197 | * A convenience macro to set the sub-font ID part of an LEGlyphID. | |
198 | * | |
199 | * @see LEGlyphID | |
200 | * @draft ICU 2.6 | |
201 | */ | |
202 | #define LE_SET_SUB_FONT(gid, font) ((gid & ~LE_SUB_FONT_MASK) | ((font << LE_SUB_FONT_SHIFT) & LE_SUB_FONT_MASK)) | |
203 | ||
204 | /** | |
205 | * A convenience macro to set the client-defined part of an LEGlyphID. | |
206 | * | |
207 | * @see LEGlyphID | |
208 | * @draft ICU 2.6 | |
209 | */ | |
210 | #define LE_SET_CLIENT(gid, client) ((gid & ~LE_CLIENT_MASK) | ((client << LE_CLIENT_SHIFT) & LE_CLIENT_MASK)) | |
211 | ||
212 | ||
213 | /** | |
214 | * Used to represent 16-bit Unicode code points. | |
215 | * | |
216 | * @stable ICU 2.4 | |
217 | */ | |
218 | typedef UChar LEUnicode16; | |
219 | ||
220 | /** | |
221 | * Used to represent 32-bit Unicode code points. | |
222 | * | |
223 | * @stable ICU 2.4 | |
224 | */ | |
225 | typedef UChar32 LEUnicode32; | |
226 | ||
227 | /** | |
228 | * Used to represent 16-bit Unicode code points. | |
229 | * | |
230 | * @deprecated since ICU 2.4. Use LEUnicode16 instead | |
231 | */ | |
232 | typedef UChar LEUnicode; | |
233 | ||
234 | /** | |
235 | * Used to hold a pair of (x, y) values which represent a point. | |
236 | * | |
237 | * @stable ICU 2.4 | |
238 | */ | |
239 | struct LEPoint | |
240 | { | |
241 | /** | |
242 | * The x coordinate of the point. | |
243 | * | |
244 | * @stable ICU 2.4 | |
245 | */ | |
246 | float fX; | |
247 | ||
248 | /** | |
249 | * The y coordinate of the point. | |
250 | * | |
251 | * @stable ICU 2.4 | |
252 | */ | |
253 | float fY; | |
254 | }; | |
255 | ||
256 | #ifndef XP_CPLUSPLUS | |
257 | /** | |
258 | * Used to hold a pair of (x, y) values which represent a point. | |
259 | * | |
260 | * @stable ICU 2.4 | |
261 | */ | |
262 | typedef struct LEPoint LEPoint; | |
263 | #endif | |
264 | ||
265 | #ifdef LE_USE_CMEMORY | |
266 | /** | |
267 | * A convenience macro for copying an array. | |
268 | * | |
269 | * @internal | |
270 | */ | |
271 | #define LE_ARRAY_COPY(dst, src, count) uprv_memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0]) | |
272 | ||
273 | /** | |
274 | * Allocate an array of basic types. This is used to isolate the rest of | |
275 | * the LayoutEngine code from cmemory.h. | |
276 | * | |
277 | * @internal | |
278 | */ | |
279 | #define LE_NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type)) | |
280 | ||
281 | /** | |
282 | * Re-allocate an array of basic types. This is used to isolate the rest of | |
283 | * the LayoutEngine code from cmemory.h. | |
284 | * | |
285 | * @internal | |
286 | */ | |
287 | #define LE_GROW_ARRAY(array, newSize) uprv_realloc((void *) (array), (newSize) * sizeof (array)[0]) | |
288 | ||
289 | /** | |
290 | * Free an array of basic types. This is used to isolate the rest of | |
291 | * the LayoutEngine code from cmemory.h. | |
292 | * | |
293 | * @internal | |
294 | */ | |
295 | #define LE_DELETE_ARRAY(array) uprv_free((void *) (array)) | |
296 | #endif | |
297 | ||
298 | /** | |
299 | * A macro to construct the four-letter tags used to | |
300 | * label TrueType tables, and for script, language and | |
301 | * feature tags in OpenType tables. | |
302 | * | |
303 | * WARNING: THIS MACRO WILL ONLY WORK CORRECTLY IF | |
304 | * THE ARGUMENT CHARACTERS ARE ASCII. | |
305 | * | |
306 | * @draft ICU 2.6 | |
307 | */ | |
308 | #define LE_MAKE_TAG(a, b, c, d) \ | |
309 | (((le_uint32)(a) << 24) | \ | |
310 | ((le_uint32)(b) << 16) | \ | |
311 | ((le_uint32)(c) << 8) | \ | |
312 | (le_uint32)(d)) | |
313 | ||
314 | /** | |
315 | * This enumeration defines constants for the standard | |
316 | * TrueType, OpenType and AAT table tags. | |
317 | * | |
318 | * @draft ICU 2.6 | |
319 | */ | |
320 | enum LETableTags { | |
321 | LE_ACNT_TABLE_TAG = 0x61636E74UL, /* 'acnt' */ | |
322 | LE_AVAR_TABLE_TAG = 0x61766172UL, /* 'avar' */ | |
323 | LE_BASE_TABLE_TAG = 0x42415345UL, /* 'BASE' */ | |
324 | LE_BDAT_TABLE_TAG = 0x62646174UL, /* 'bdat' */ | |
325 | LE_BHED_TABLE_TAG = 0x62686564UL, /* 'bhed' */ | |
326 | LE_BLOC_TABLE_TAG = 0x626C6F63UL, /* 'bloc' */ | |
327 | LE_BSLN_TABLE_TAG = 0x62736C6EUL, /* 'bsln' */ | |
328 | LE_CFF__TABLE_TAG = 0x43464620UL, /* 'CFF ' */ | |
329 | LE_CMAP_TABLE_TAG = 0x636D6170UL, /* 'cmap' */ | |
330 | LE_CVAR_TABLE_TAG = 0x63766172UL, /* 'cvar' */ | |
331 | LE_CVT__TABLE_TAG = 0x63767420UL, /* 'cvt ' */ | |
332 | LE_DSIG_TABLE_TAG = 0x44534947UL, /* 'DSIG' */ | |
333 | LE_EBDT_TABLE_TAG = 0x45424454UL, /* 'EBDT' */ | |
334 | LE_EBLC_TABLE_TAG = 0x45424C43UL, /* 'EBLC' */ | |
335 | LE_EBSC_TABLE_TAG = 0x45425343UL, /* 'EBSC' */ | |
336 | LE_FDSC_TABLE_TAG = 0x66647363UL, /* 'fdsc' */ | |
337 | LE_FEAT_TABLE_TAG = 0x66656174UL, /* 'feat' */ | |
338 | LE_FMTX_TABLE_TAG = 0x666D7478UL, /* 'fmtx' */ | |
339 | LE_FPGM_TABLE_TAG = 0x6670676DUL, /* 'fpgm' */ | |
340 | LE_FVAR_TABLE_TAG = 0x66766172UL, /* 'fvar' */ | |
341 | LE_GASP_TABLE_TAG = 0x67617370UL, /* 'gasp' */ | |
342 | LE_GDEF_TABLE_TAG = 0x47444546UL, /* 'GDEF' */ | |
343 | LE_GLYF_TABLE_TAG = 0x676C7966UL, /* 'glyf' */ | |
344 | LE_GPOS_TABLE_TAG = 0x47504F53UL, /* 'GPOS' */ | |
345 | LE_GSUB_TABLE_TAG = 0x47535542UL, /* 'GSUB' */ | |
346 | LE_GVAR_TABLE_TAG = 0x67766172UL, /* 'gvar' */ | |
347 | LE_HDMX_TABLE_TAG = 0x68646D78UL, /* 'hdmx' */ | |
348 | LE_HEAD_TABLE_TAG = 0x68656164UL, /* 'head' */ | |
349 | LE_HHEA_TABLE_TAG = 0x68686561UL, /* 'hhea' */ | |
350 | LE_HMTX_TABLE_TAG = 0x686D7478UL, /* 'hmtx' */ | |
351 | LE_HSTY_TABLE_TAG = 0x68737479UL, /* 'hsty' */ | |
352 | LE_JUST_TABLE_TAG = 0x6A757374UL, /* 'just' */ | |
353 | LE_JSTF_TABLE_TAG = 0x4A535446UL, /* 'JSTF' */ | |
354 | LE_KERN_TABLE_TAG = 0x6B65726EUL, /* 'kern' */ | |
355 | LE_LCAR_TABLE_TAG = 0x6C636172UL, /* 'lcar' */ | |
356 | LE_LOCA_TABLE_TAG = 0x6C6F6361UL, /* 'loca' */ | |
357 | LE_LTSH_TABLE_TAG = 0x4C545348UL, /* 'LTSH' */ | |
358 | LE_MAXP_TABLE_TAG = 0x6D617870UL, /* 'maxp' */ | |
359 | LE_MORT_TABLE_TAG = 0x6D6F7274UL, /* 'mort' */ | |
360 | LE_MORX_TABLE_TAG = 0x6D6F7278UL, /* 'morx' */ | |
361 | LE_NAME_TABLE_TAG = 0x6E616D65UL, /* 'name' */ | |
362 | LE_OPBD_TABLE_TAG = 0x6F706264UL, /* 'opbd' */ | |
363 | LE_OS_2_TABLE_TAG = 0x4F532F32UL, /* 'OS/2' */ | |
364 | LE_PCLT_TABLE_TAG = 0x50434C54UL, /* 'PCLT' */ | |
365 | LE_POST_TABLE_TAG = 0x706F7374UL, /* 'post' */ | |
366 | LE_PREP_TABLE_TAG = 0x70726570UL, /* 'prep' */ | |
367 | LE_PROP_TABLE_TAG = 0x70726F70UL, /* 'prop' */ | |
368 | LE_TRAK_TABLE_TAG = 0x7472616BUL, /* 'trak' */ | |
369 | LE_VDMX_TABLE_TAG = 0x56444D58UL, /* 'VDMX' */ | |
370 | LE_VHEA_TABLE_TAG = 0x76686561UL, /* 'vhea' */ | |
371 | LE_VMTX_TABLE_TAG = 0x766D7478UL, /* 'vmtx' */ | |
372 | LE_VORG_TABLE_TAG = 0x564F5247UL, /* 'VORG' */ | |
373 | LE_ZAPF_TABLE_TAG = 0x5A617066UL /* 'Zapf' */ | |
374 | }; | |
375 | ||
376 | /** | |
377 | * This enumeration defines constants for all | |
378 | * the common OpenType feature tags. | |
379 | * | |
380 | * @draft ICU 2.6 | |
381 | */ | |
382 | enum LEFeatureTags { | |
383 | LE_AALT_FEATURE_TAG = 0x61616C74UL, /* 'aalt' */ | |
384 | LE_ABVF_FEATURE_TAG = 0x61627666UL, /* 'abvf' */ | |
385 | LE_ABVM_FEATURE_TAG = 0x6162766DUL, /* 'abvm' */ | |
386 | LE_ABVS_FEATURE_TAG = 0x61627673UL, /* 'abvs' */ | |
387 | LE_AFRC_FEATURE_TAG = 0x61667263UL, /* 'afrc' */ | |
388 | LE_AKHN_FEATURE_TAG = 0x616B686EUL, /* 'akhn' */ | |
389 | LE_BLWF_FEATURE_TAG = 0x626C7766UL, /* 'blwf' */ | |
390 | LE_BLWM_FEATURE_TAG = 0x626C776DUL, /* 'blwm' */ | |
391 | LE_BLWS_FEATURE_TAG = 0x626C7773UL, /* 'blws' */ | |
392 | LE_CALT_FEATURE_TAG = 0x63616C74UL, /* 'calt' */ | |
393 | LE_CASE_FEATURE_TAG = 0x63617365UL, /* 'case' */ | |
394 | LE_CCMP_FEATURE_TAG = 0x63636D70UL, /* 'ccmp' */ | |
395 | LE_CLIG_FEATURE_TAG = 0x636C6967UL, /* 'clig' */ | |
396 | LE_CPSP_FEATURE_TAG = 0x63707370UL, /* 'cpsp' */ | |
397 | LE_CSWH_FEATURE_TAG = 0x63737768UL, /* 'cswh' */ | |
398 | LE_CURS_FEATURE_TAG = 0x63757273UL, /* 'curs' */ | |
399 | LE_C2SC_FEATURE_TAG = 0x63327363UL, /* 'c2sc' */ | |
400 | LE_C2PC_FEATURE_TAG = 0x63327063UL, /* 'c2pc' */ | |
401 | LE_DIST_FEATURE_TAG = 0x64697374UL, /* 'dist' */ | |
402 | LE_DLIG_FEATURE_TAG = 0x646C6967UL, /* 'dlig' */ | |
403 | LE_DNOM_FEATURE_TAG = 0x646E6F6DUL, /* 'dnom' */ | |
404 | LE_EXPT_FEATURE_TAG = 0x65787074UL, /* 'expt' */ | |
405 | LE_FALT_FEATURE_TAG = 0x66616C74UL, /* 'falt' */ | |
406 | LE_FIN2_FEATURE_TAG = 0x66696E32UL, /* 'fin2' */ | |
407 | LE_FIN3_FEATURE_TAG = 0x66696E33UL, /* 'fin3' */ | |
408 | LE_FINA_FEATURE_TAG = 0x66696E61UL, /* 'fina' */ | |
409 | LE_FRAC_FEATURE_TAG = 0x66726163UL, /* 'frac' */ | |
410 | LE_FWID_FEATURE_TAG = 0x66776964UL, /* 'fwid' */ | |
411 | LE_HALF_FEATURE_TAG = 0x68616C66UL, /* 'half' */ | |
412 | LE_HALN_FEATURE_TAG = 0x68616C6EUL, /* 'haln' */ | |
413 | LE_HALT_FEATURE_TAG = 0x68616C74UL, /* 'halt' */ | |
414 | LE_HIST_FEATURE_TAG = 0x68697374UL, /* 'hist' */ | |
415 | LE_HKNA_FEATURE_TAG = 0x686B6E61UL, /* 'hkna' */ | |
416 | LE_HLIG_FEATURE_TAG = 0x686C6967UL, /* 'hlig' */ | |
417 | LE_HNGL_FEATURE_TAG = 0x686E676CUL, /* 'hngl' */ | |
418 | LE_HWID_FEATURE_TAG = 0x68776964UL, /* 'hwid' */ | |
419 | LE_INIT_FEATURE_TAG = 0x696E6974UL, /* 'init' */ | |
420 | LE_ISOL_FEATURE_TAG = 0x69736F6CUL, /* 'isol' */ | |
421 | LE_ITAL_FEATURE_TAG = 0x6974616CUL, /* 'ital' */ | |
422 | LE_JALT_FEATURE_TAG = 0x6A616C74UL, /* 'jalt' */ | |
423 | LE_JP78_FEATURE_TAG = 0x6A703738UL, /* 'jp78' */ | |
424 | LE_JP83_FEATURE_TAG = 0x6A703833UL, /* 'jp83' */ | |
425 | LE_JP90_FEATURE_TAG = 0x6A703930UL, /* 'jp90' */ | |
426 | LE_KERN_FEATURE_TAG = 0x6B65726EUL, /* 'kern' */ | |
427 | LE_LFBD_FEATURE_TAG = 0x6C666264UL, /* 'lfbd' */ | |
428 | LE_LIGA_FEATURE_TAG = 0x6C696761UL, /* 'liga' */ | |
429 | LE_LJMO_FEATURE_TAG = 0x6C6A6D6FUL, /* 'ljmo' */ | |
430 | LE_LNUM_FEATURE_TAG = 0x6C6E756DUL, /* 'lnum' */ | |
431 | LE_LOCL_FEATURE_TAG = 0x6C6F636CUL, /* 'locl' */ | |
432 | LE_MARK_FEATURE_TAG = 0x6D61726BUL, /* 'mark' */ | |
433 | LE_MED2_FEATURE_TAG = 0x6D656432UL, /* 'med2' */ | |
434 | LE_MEDI_FEATURE_TAG = 0x6D656469UL, /* 'medi' */ | |
435 | LE_MGRK_FEATURE_TAG = 0x6D67726BUL, /* 'mgrk' */ | |
436 | LE_MKMK_FEATURE_TAG = 0x6D6B6D6BUL, /* 'mkmk' */ | |
437 | LE_MSET_FEATURE_TAG = 0x6D736574UL, /* 'mset' */ | |
438 | LE_NALT_FEATURE_TAG = 0x6E616C74UL, /* 'nalt' */ | |
439 | LE_NLCK_FEATURE_TAG = 0x6E6C636BUL, /* 'nlck' */ | |
440 | LE_NUKT_FEATURE_TAG = 0x6E756B74UL, /* 'nukt' */ | |
441 | LE_NUMR_FEATURE_TAG = 0x6E756D72UL, /* 'numr' */ | |
442 | LE_ONUM_FEATURE_TAG = 0x6F6E756DUL, /* 'onum' */ | |
443 | LE_OPBD_FEATURE_TAG = 0x6F706264UL, /* 'opbd' */ | |
444 | LE_ORDN_FEATURE_TAG = 0x6F72646EUL, /* 'ordn' */ | |
445 | LE_ORNM_FEATURE_TAG = 0x6F726E6DUL, /* 'ornm' */ | |
446 | LE_PALT_FEATURE_TAG = 0x70616C74UL, /* 'palt' */ | |
447 | LE_PCAP_FEATURE_TAG = 0x70636170UL, /* 'pcap' */ | |
448 | LE_PNUM_FEATURE_TAG = 0x706E756DUL, /* 'pnum' */ | |
449 | LE_PREF_FEATURE_TAG = 0x70726566UL, /* 'pref' */ | |
450 | LE_PRES_FEATURE_TAG = 0x70726573UL, /* 'pres' */ | |
451 | LE_PSTF_FEATURE_TAG = 0x70737466UL, /* 'pstf' */ | |
452 | LE_PSTS_FEATURE_TAG = 0x70737473UL, /* 'psts' */ | |
453 | LE_PWID_FEATURE_TAG = 0x70776964UL, /* 'pwid' */ | |
454 | LE_QWID_FEATURE_TAG = 0x71776964UL, /* 'qwid' */ | |
455 | LE_RAND_FEATURE_TAG = 0x72616E64UL, /* 'rand' */ | |
456 | LE_RLIG_FEATURE_TAG = 0x726C6967UL, /* 'rlig' */ | |
457 | LE_RPHF_FEATURE_TAG = 0x72706866UL, /* 'rphf' */ | |
458 | LE_RTBD_FEATURE_TAG = 0x72746264UL, /* 'rtbd' */ | |
459 | LE_RTLA_FEATURE_TAG = 0x72746C61UL, /* 'rtla' */ | |
460 | LE_RUBY_FEATURE_TAG = 0x72756279UL, /* 'ruby' */ | |
461 | LE_SALT_FEATURE_TAG = 0x73616C74UL, /* 'salt' */ | |
462 | LE_SINF_FEATURE_TAG = 0x73696E66UL, /* 'sinf' */ | |
463 | LE_SIZE_FEATURE_TAG = 0x73697A65UL, /* 'size' */ | |
464 | LE_SMCP_FEATURE_TAG = 0x736D6370UL, /* 'smcp' */ | |
465 | LE_SMPL_FEATURE_TAG = 0x736D706CUL, /* 'smpl' */ | |
466 | LE_SS01_FEATURE_TAG = 0x73733031UL, /* 'ss01' */ | |
467 | LE_SS02_FEATURE_TAG = 0x73733032UL, /* 'ss02' */ | |
468 | LE_SS03_FEATURE_TAG = 0x73733033UL, /* 'ss03' */ | |
469 | LE_SS04_FEATURE_TAG = 0x73733034UL, /* 'ss04' */ | |
470 | LE_SS05_FEATURE_TAG = 0x73733035UL, /* 'ss05' */ | |
471 | LE_SS06_FEATURE_TAG = 0x73733036UL, /* 'ss06' */ | |
472 | LE_SS07_FEATURE_TAG = 0x73733037UL, /* 'ss07' */ | |
473 | LE_SS08_FEATURE_TAG = 0x73733038UL, /* 'ss08' */ | |
474 | LE_SS09_FEATURE_TAG = 0x73733039UL, /* 'ss09' */ | |
475 | LE_SS10_FEATURE_TAG = 0x73733130UL, /* 'ss10' */ | |
476 | LE_SS11_FEATURE_TAG = 0x73733131UL, /* 'ss11' */ | |
477 | LE_SS12_FEATURE_TAG = 0x73733132UL, /* 'ss12' */ | |
478 | LE_SS13_FEATURE_TAG = 0x73733133UL, /* 'ss13' */ | |
479 | LE_SS14_FEATURE_TAG = 0x73733134UL, /* 'ss14' */ | |
480 | LE_SS15_FEATURE_TAG = 0x73733135UL, /* 'ss15' */ | |
481 | LE_SS16_FEATURE_TAG = 0x73733136UL, /* 'ss16' */ | |
482 | LE_SS17_FEATURE_TAG = 0x73733137UL, /* 'ss17' */ | |
483 | LE_SS18_FEATURE_TAG = 0x73733138UL, /* 'ss18' */ | |
484 | LE_SS19_FEATURE_TAG = 0x73733139UL, /* 'ss19' */ | |
485 | LE_SS20_FEATURE_TAG = 0x73733230UL, /* 'ss20' */ | |
486 | LE_SUBS_FEATURE_TAG = 0x73756273UL, /* 'subs' */ | |
487 | LE_SUPS_FEATURE_TAG = 0x73757073UL, /* 'sups' */ | |
488 | LE_SWSH_FEATURE_TAG = 0x73777368UL, /* 'swsh' */ | |
489 | LE_TITL_FEATURE_TAG = 0x7469746CUL, /* 'titl' */ | |
490 | LE_TJMO_FEATURE_TAG = 0x746A6D6FUL, /* 'tjmo' */ | |
491 | LE_TNAM_FEATURE_TAG = 0x746E616DUL, /* 'tnam' */ | |
492 | LE_TNUM_FEATURE_TAG = 0x746E756DUL, /* 'tnum' */ | |
493 | LE_TRAD_FEATURE_TAG = 0x74726164UL, /* 'trad' */ | |
494 | LE_TWID_FEATURE_TAG = 0x74776964UL, /* 'twid' */ | |
495 | LE_UNIC_FEATURE_TAG = 0x756E6963UL, /* 'unic' */ | |
496 | LE_VALT_FEATURE_TAG = 0x76616C74UL, /* 'valt' */ | |
497 | LE_VATU_FEATURE_TAG = 0x76617475UL, /* 'vatu' */ | |
498 | LE_VERT_FEATURE_TAG = 0x76657274UL, /* 'vert' */ | |
499 | LE_VHAL_FEATURE_TAG = 0x7668616CUL, /* 'vhal' */ | |
500 | LE_VJMO_FEATURE_TAG = 0x766A6D6FUL, /* 'vjmo' */ | |
501 | LE_VKNA_FEATURE_TAG = 0x766B6E61UL, /* 'vkna' */ | |
502 | LE_VKRN_FEATURE_TAG = 0x766B726EUL, /* 'vkrn' */ | |
503 | LE_VPAL_FEATURE_TAG = 0x7670616CUL, /* 'vpal' */ | |
504 | LE_VRT2_FEATURE_TAG = 0x76727432UL, /* 'vrt2' */ | |
505 | LE_ZERO_FEATURE_TAG = 0x7A65726FUL /* 'zero' */ | |
506 | }; | |
507 | ||
508 | /** | |
509 | * Error codes returned by the LayoutEngine. | |
510 | * | |
511 | * @stable ICU 2.4 | |
512 | */ | |
513 | enum LEErrorCode { | |
514 | /* informational */ | |
515 | LE_NO_SUBFONT_WARNING = U_USING_DEFAULT_WARNING, | |
516 | ||
517 | /* success */ | |
518 | LE_NO_ERROR = U_ZERO_ERROR, | |
519 | ||
520 | /* failures */ | |
521 | LE_ILLEGAL_ARGUMENT_ERROR = U_ILLEGAL_ARGUMENT_ERROR, | |
522 | LE_MEMORY_ALLOCATION_ERROR = U_MEMORY_ALLOCATION_ERROR, | |
523 | LE_INDEX_OUT_OF_BOUNDS_ERROR = U_INDEX_OUTOFBOUNDS_ERROR, | |
524 | LE_NO_LAYOUT_ERROR = U_UNSUPPORTED_ERROR, | |
525 | LE_INTERNAL_ERROR = U_INTERNAL_PROGRAM_ERROR, | |
526 | LE_FONT_FILE_NOT_FOUND_ERROR = U_FILE_ACCESS_ERROR, | |
527 | LE_MISSING_FONT_TABLE_ERROR = U_MISSING_RESOURCE_ERROR | |
528 | }; | |
529 | ||
530 | #ifndef XP_CPLUSPLUS | |
531 | /** | |
532 | * Error codes returned by the LayoutEngine. | |
533 | * | |
534 | * @stable ICU 2.4 | |
535 | */ | |
536 | typedef enum LEErrorCode LEErrorCode; | |
537 | #endif | |
538 | ||
539 | /** | |
540 | * A convenience macro to test for the success of a LayoutEngine call. | |
541 | * | |
542 | * @stable ICU 2.4 | |
543 | */ | |
544 | #define LE_SUCCESS(code) (U_SUCCESS((UErrorCode)code)) | |
545 | ||
546 | /** | |
547 | * A convenience macro to test for the failure of a LayoutEngine call. | |
548 | * | |
549 | * @stable ICU 2.4 | |
550 | */ | |
551 | #define LE_FAILURE(code) (U_FAILURE((UErrorCode)code)) | |
552 | ||
553 | U_NAMESPACE_END | |
554 | #endif | |
555 | ||
556 |