]> git.saurik.com Git - apple/icu.git/blame - icuSources/layout/LETypes.h
ICU-6.2.14.tar.gz
[apple/icu.git] / icuSources / layout / LETypes.h
CommitLineData
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
22U_NAMESPACE_BEGIN
23
24/**
25 * A type used for signed, 32-bit integers.
26 *
27 * @stable ICU 2.4
28 */
29typedef int32_t le_int32;
30
31/**
32 * A type used for unsigned, 32-bit integers.
33 *
34 * @stable ICU 2.4
35 */
36typedef uint32_t le_uint32;
37
38/**
39 * A type used for signed, 16-bit integers.
40 *
41 * @stable ICU 2.4
42 */
43typedef int16_t le_int16;
44
45/**
46 * A type used for unsigned, 16-bit integers.
47 *
48 * @stable ICU 2.4
49 */
50typedef uint16_t le_uint16;
51
52/**
53 * A type used for signed, 8-bit integers.
54 *
55 * @stable ICU 2.4
56 */
57typedef int8_t le_int8;
58
59/**
60 * A type used for unsigned, 8-bit integers.
61 *
62 * @stable ICU 2.4
63 */
64typedef uint8_t le_uint8;
65
66
67/**
68 * A type used for boolean values.
69 *
70 * @stable ICU 2.4
71 */
72typedef 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 */
88typedef 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 */
96typedef 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 */
107typedef 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 */
218typedef UChar LEUnicode16;
219
220/**
221 * Used to represent 32-bit Unicode code points.
222 *
223 * @stable ICU 2.4
224 */
225typedef UChar32 LEUnicode32;
226
227/**
228 * Used to represent 16-bit Unicode code points.
229 *
230 * @deprecated since ICU 2.4. Use LEUnicode16 instead
231 */
232typedef 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 */
239struct 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 */
262typedef 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 */
320enum 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 */
382enum 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 */
513enum 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 */
536typedef 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
553U_NAMESPACE_END
554#endif
555
556