1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 38393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef __LETYPES_H 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define __LETYPES_H 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !defined(LE_USE_CMEMORY) && (defined(U_LAYOUT_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || defined(U_STATIC_IMPLEMENTATION) || defined(U_COMBINED_IMPLEMENTATION)) 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_USE_CMEMORY 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 16103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifdef __cplusplus 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uobject.h" 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef LE_USE_CMEMORY 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "cmemory.h" 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*! 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file 2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * \brief C API: Basic definitions for the ICU LayoutEngine 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for signed, 32-bit integers. 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef int32_t le_int32; 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for unsigned, 32-bit integers. 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef uint32_t le_uint32; 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for signed, 16-bit integers. 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef int16_t le_int16; 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for unsigned, 16-bit integers. 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef uint16_t le_uint16; 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for signed, 8-bit integers. 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef int8_t le_int8; 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for unsigned, 8-bit integers. 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef uint8_t le_uint8; 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A type used for boolean values. 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UBool le_bool; 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef NULL 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent empty pointers. 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define NULL 0 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used for four character tags. 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint32 LETag; 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used for 16-bit glyph indices as they're represented 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * in TrueType font tables. 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint16 TTGlyphID; 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used for glyph indices. The low-order 16 bits are 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the glyph ID within the font. The next 8 bits are 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the sub-font ID within a compound font. The high- 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * order 8 bits are client defined. The LayoutEngine 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * will never change or look at the client defined bits. 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef le_uint32 LEGlyphID; 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to mask off the glyph ID part of an LEGlyphID. 116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GLYPH_MASK 0x0000FFFF 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to shift the glyph ID part of an LEGlyphID 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * into the low-order bits. 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GLYPH_SHIFT 0 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to mask off the sub-font ID part of an LEGlyphID. 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SUB_FONT_MASK 0x00FF0000 139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to shift the sub-font ID part of an LEGlyphID 142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * into the low-order bits. 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SUB_FONT_SHIFT 16 148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to mask off the client-defined part of an LEGlyphID. 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_CLIENT_MASK 0xFF000000 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to shift the sub-font ID part of an LEGlyphID 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * into the low-order bits. 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_CLIENT_SHIFT 24 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the Glyph ID part of an LEGlyphID. 170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GET_GLYPH(gid) ((gid & LE_GLYPH_MASK) >> LE_GLYPH_SHIFT) 175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the sub-font ID part of an LEGlyphID. 178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GET_SUB_FONT(gid) ((gid & LE_SUB_FONT_MASK) >> LE_SUB_FONT_SHIFT) 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the client-defined part of an LEGlyphID. 186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GET_CLIENT(gid) ((gid & LE_CLIENT_MASK) >> LE_CLIENT_SHIFT) 191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to set the Glyph ID part of an LEGlyphID. 195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SET_GLYPH(gid, glyph) ((gid & ~LE_GLYPH_MASK) | ((glyph << LE_GLYPH_SHIFT) & LE_GLYPH_MASK)) 200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to set the sub-font ID part of an LEGlyphID. 203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SET_SUB_FONT(gid, font) ((gid & ~LE_SUB_FONT_MASK) | ((font << LE_SUB_FONT_SHIFT) & LE_SUB_FONT_MASK)) 208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to set the client-defined part of an LEGlyphID. 211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see LEGlyphID 213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SET_CLIENT(gid, client) ((gid & ~LE_CLIENT_MASK) | ((client << LE_CLIENT_SHIFT) & LE_CLIENT_MASK)) 216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent 16-bit Unicode code points. 220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UChar LEUnicode16; 224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent 32-bit Unicode code points. 227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UChar32 LEUnicode32; 231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 232103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef U_HIDE_DEPRECATED_API 233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to represent 16-bit Unicode code points. 235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @deprecated since ICU 2.4. Use LEUnicode16 instead 237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef UChar LEUnicode; 239103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif /* U_HIDE_DEPRECATED_API */ 240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to hold a pair of (x, y) values which represent a point. 243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querustruct LEPoint 247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The x coordinate of the point. 250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru float fX; 254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The y coordinate of the point. 257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru float fY; 261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 263103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef __cplusplus 264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used to hold a pair of (x, y) values which represent a point. 266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef struct LEPoint LEPoint; 270ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 273103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef U_HIDE_INTERNAL_API 274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to get the length of an array. 276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal 278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_ARRAY_SIZE(array) (sizeof array / sizeof array[0]) 280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef LE_USE_CMEMORY 282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro for copying an array. 284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal 286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_ARRAY_COPY(dst, src, count) uprv_memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0]) 288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Allocate an array of basic types. This is used to isolate the rest of 291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the LayoutEngine code from cmemory.h. 292ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 293ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal 294ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 295ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type)) 296ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 297ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 298ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Re-allocate an array of basic types. This is used to isolate the rest of 299ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the LayoutEngine code from cmemory.h. 300ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 301ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal 302ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 303ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_GROW_ARRAY(array, newSize) uprv_realloc((void *) (array), (newSize) * sizeof (array)[0]) 304ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 305ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 306ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Free an array of basic types. This is used to isolate the rest of 307ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the LayoutEngine code from cmemory.h. 308ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 309ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal 310ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 311ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_DELETE_ARRAY(array) uprv_free((void *) (array)) 31254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#else 31354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 31454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/* Not using ICU memory - use C std lib versions */ 31554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 31654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include <stdlib.h> 31754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include <string.h> 31854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 31954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/** 32054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * A convenience macro to get the length of an array. 32154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 32254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 32354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 32454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define LE_ARRAY_SIZE(array) (sizeof array / sizeof array[0]) 32554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 32654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/** 32754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * A convenience macro for copying an array. 32854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 32954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 33054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 33154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define LE_ARRAY_COPY(dst, src, count) memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0]) 33254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 33354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/** 33454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Allocate an array of basic types. This is used to isolate the rest of 33554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * the LayoutEngine code from cmemory.h. 33654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 33754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 33854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 33954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define LE_NEW_ARRAY(type, count) (type *) malloc((count) * sizeof(type)) 34054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 34154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/** 34254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Re-allocate an array of basic types. This is used to isolate the rest of 34354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * the LayoutEngine code from cmemory.h. 34454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 34554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 34654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 34754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define LE_GROW_ARRAY(array, newSize) realloc((void *) (array), (newSize) * sizeof (array)[0]) 34854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 34954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /** 35054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Free an array of basic types. This is used to isolate the rest of 35154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * the LayoutEngine code from cmemory.h. 35254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 35354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @internal 35454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 35554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define LE_DELETE_ARRAY(array) free((void *) (array)) 35654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 357ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 358103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif /* U_HIDE_INTERNAL_API */ 359ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 360ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 361ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A macro to construct the four-letter tags used to 362ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * label TrueType tables, and for script, language and 363ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * feature tags in OpenType tables. 364ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 365ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * WARNING: THIS MACRO WILL ONLY WORK CORRECTLY IF 366ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * THE ARGUMENT CHARACTERS ARE ASCII. 367ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 368ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 369ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 370ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_MAKE_TAG(a, b, c, d) \ 371ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru (((le_uint32)(a) << 24) | \ 372ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ((le_uint32)(b) << 16) | \ 373ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ((le_uint32)(c) << 8) | \ 374ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru (le_uint32)(d)) 375ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 376ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 377ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This enumeration defines constants for the standard 378ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * TrueType, OpenType and AAT table tags. 379ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 380ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 381ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 382ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum LETableTags { 383ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ACNT_TABLE_TAG = 0x61636E74UL, /**< 'acnt' */ 384ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_AVAR_TABLE_TAG = 0x61766172UL, /**< 'avar' */ 385ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BASE_TABLE_TAG = 0x42415345UL, /**< 'BASE' */ 386ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BDAT_TABLE_TAG = 0x62646174UL, /**< 'bdat' */ 387ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BHED_TABLE_TAG = 0x62686564UL, /**< 'bhed' */ 388ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BLOC_TABLE_TAG = 0x626C6F63UL, /**< 'bloc' */ 389ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BSLN_TABLE_TAG = 0x62736C6EUL, /**< 'bsln' */ 390ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CFF__TABLE_TAG = 0x43464620UL, /**< 'CFF ' */ 391ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CMAP_TABLE_TAG = 0x636D6170UL, /**< 'cmap' */ 392ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CVAR_TABLE_TAG = 0x63766172UL, /**< 'cvar' */ 393ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CVT__TABLE_TAG = 0x63767420UL, /**< 'cvt ' */ 394ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_DSIG_TABLE_TAG = 0x44534947UL, /**< 'DSIG' */ 395ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_EBDT_TABLE_TAG = 0x45424454UL, /**< 'EBDT' */ 396ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_EBLC_TABLE_TAG = 0x45424C43UL, /**< 'EBLC' */ 397ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_EBSC_TABLE_TAG = 0x45425343UL, /**< 'EBSC' */ 398ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FDSC_TABLE_TAG = 0x66647363UL, /**< 'fdsc' */ 399ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FEAT_TABLE_TAG = 0x66656174UL, /**< 'feat' */ 400ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FMTX_TABLE_TAG = 0x666D7478UL, /**< 'fmtx' */ 401ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FPGM_TABLE_TAG = 0x6670676DUL, /**< 'fpgm' */ 402ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FVAR_TABLE_TAG = 0x66766172UL, /**< 'fvar' */ 403ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_GASP_TABLE_TAG = 0x67617370UL, /**< 'gasp' */ 404ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_GDEF_TABLE_TAG = 0x47444546UL, /**< 'GDEF' */ 405ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_GLYF_TABLE_TAG = 0x676C7966UL, /**< 'glyf' */ 406ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_GPOS_TABLE_TAG = 0x47504F53UL, /**< 'GPOS' */ 407ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_GSUB_TABLE_TAG = 0x47535542UL, /**< 'GSUB' */ 408ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_GVAR_TABLE_TAG = 0x67766172UL, /**< 'gvar' */ 409ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HDMX_TABLE_TAG = 0x68646D78UL, /**< 'hdmx' */ 410ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HEAD_TABLE_TAG = 0x68656164UL, /**< 'head' */ 411ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HHEA_TABLE_TAG = 0x68686561UL, /**< 'hhea' */ 412ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HMTX_TABLE_TAG = 0x686D7478UL, /**< 'hmtx' */ 413ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HSTY_TABLE_TAG = 0x68737479UL, /**< 'hsty' */ 414ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_JUST_TABLE_TAG = 0x6A757374UL, /**< 'just' */ 415ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_JSTF_TABLE_TAG = 0x4A535446UL, /**< 'JSTF' */ 416ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_KERN_TABLE_TAG = 0x6B65726EUL, /**< 'kern' */ 417ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LCAR_TABLE_TAG = 0x6C636172UL, /**< 'lcar' */ 418ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LOCA_TABLE_TAG = 0x6C6F6361UL, /**< 'loca' */ 419ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LTSH_TABLE_TAG = 0x4C545348UL, /**< 'LTSH' */ 420ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MAXP_TABLE_TAG = 0x6D617870UL, /**< 'maxp' */ 421ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MORT_TABLE_TAG = 0x6D6F7274UL, /**< 'mort' */ 422ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MORX_TABLE_TAG = 0x6D6F7278UL, /**< 'morx' */ 423ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NAME_TABLE_TAG = 0x6E616D65UL, /**< 'name' */ 424ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_OPBD_TABLE_TAG = 0x6F706264UL, /**< 'opbd' */ 425ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_OS_2_TABLE_TAG = 0x4F532F32UL, /**< 'OS/2' */ 426ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PCLT_TABLE_TAG = 0x50434C54UL, /**< 'PCLT' */ 427ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_POST_TABLE_TAG = 0x706F7374UL, /**< 'post' */ 428ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PREP_TABLE_TAG = 0x70726570UL, /**< 'prep' */ 429ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PROP_TABLE_TAG = 0x70726F70UL, /**< 'prop' */ 430ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_TRAK_TABLE_TAG = 0x7472616BUL, /**< 'trak' */ 431ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VDMX_TABLE_TAG = 0x56444D58UL, /**< 'VDMX' */ 432ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VHEA_TABLE_TAG = 0x76686561UL, /**< 'vhea' */ 433ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VMTX_TABLE_TAG = 0x766D7478UL, /**< 'vmtx' */ 434ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VORG_TABLE_TAG = 0x564F5247UL, /**< 'VORG' */ 435ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ZAPF_TABLE_TAG = 0x5A617066UL /**< 'Zapf' */ 436ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 437ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 438ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 439ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This enumeration defines constants for all 440ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the common OpenType feature tags. 441ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 442ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 443ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 444ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum LEFeatureTags { 445ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_AALT_FEATURE_TAG = 0x61616C74UL, /**< 'aalt' */ 446ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ABVF_FEATURE_TAG = 0x61627666UL, /**< 'abvf' */ 447ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ABVM_FEATURE_TAG = 0x6162766DUL, /**< 'abvm' */ 448ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ABVS_FEATURE_TAG = 0x61627673UL, /**< 'abvs' */ 449ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_AFRC_FEATURE_TAG = 0x61667263UL, /**< 'afrc' */ 450ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_AKHN_FEATURE_TAG = 0x616B686EUL, /**< 'akhn' */ 451ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BLWF_FEATURE_TAG = 0x626C7766UL, /**< 'blwf' */ 452ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BLWM_FEATURE_TAG = 0x626C776DUL, /**< 'blwm' */ 453ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_BLWS_FEATURE_TAG = 0x626C7773UL, /**< 'blws' */ 454ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CALT_FEATURE_TAG = 0x63616C74UL, /**< 'calt' */ 455ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CASE_FEATURE_TAG = 0x63617365UL, /**< 'case' */ 456ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CCMP_FEATURE_TAG = 0x63636D70UL, /**< 'ccmp' */ 4578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_CJCT_FEATURE_TAG = 0x636A6374UL, /**< 'cjct' */ 458ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CLIG_FEATURE_TAG = 0x636C6967UL, /**< 'clig' */ 459ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CPSP_FEATURE_TAG = 0x63707370UL, /**< 'cpsp' */ 460ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CSWH_FEATURE_TAG = 0x63737768UL, /**< 'cswh' */ 461ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_CURS_FEATURE_TAG = 0x63757273UL, /**< 'curs' */ 462ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_C2SC_FEATURE_TAG = 0x63327363UL, /**< 'c2sc' */ 463ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_C2PC_FEATURE_TAG = 0x63327063UL, /**< 'c2pc' */ 464ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_DIST_FEATURE_TAG = 0x64697374UL, /**< 'dist' */ 465ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_DLIG_FEATURE_TAG = 0x646C6967UL, /**< 'dlig' */ 466ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_DNOM_FEATURE_TAG = 0x646E6F6DUL, /**< 'dnom' */ 467ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_EXPT_FEATURE_TAG = 0x65787074UL, /**< 'expt' */ 468ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FALT_FEATURE_TAG = 0x66616C74UL, /**< 'falt' */ 469ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FIN2_FEATURE_TAG = 0x66696E32UL, /**< 'fin2' */ 470ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FIN3_FEATURE_TAG = 0x66696E33UL, /**< 'fin3' */ 471ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FINA_FEATURE_TAG = 0x66696E61UL, /**< 'fina' */ 472ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FRAC_FEATURE_TAG = 0x66726163UL, /**< 'frac' */ 473ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FWID_FEATURE_TAG = 0x66776964UL, /**< 'fwid' */ 474ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HALF_FEATURE_TAG = 0x68616C66UL, /**< 'half' */ 475ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HALN_FEATURE_TAG = 0x68616C6EUL, /**< 'haln' */ 476ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HALT_FEATURE_TAG = 0x68616C74UL, /**< 'halt' */ 477ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HIST_FEATURE_TAG = 0x68697374UL, /**< 'hist' */ 478ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HKNA_FEATURE_TAG = 0x686B6E61UL, /**< 'hkna' */ 479ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HLIG_FEATURE_TAG = 0x686C6967UL, /**< 'hlig' */ 480ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HNGL_FEATURE_TAG = 0x686E676CUL, /**< 'hngl' */ 481ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_HWID_FEATURE_TAG = 0x68776964UL, /**< 'hwid' */ 482ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_INIT_FEATURE_TAG = 0x696E6974UL, /**< 'init' */ 483ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ISOL_FEATURE_TAG = 0x69736F6CUL, /**< 'isol' */ 484ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ITAL_FEATURE_TAG = 0x6974616CUL, /**< 'ital' */ 485ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_JALT_FEATURE_TAG = 0x6A616C74UL, /**< 'jalt' */ 486ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_JP78_FEATURE_TAG = 0x6A703738UL, /**< 'jp78' */ 487ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_JP83_FEATURE_TAG = 0x6A703833UL, /**< 'jp83' */ 488ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_JP90_FEATURE_TAG = 0x6A703930UL, /**< 'jp90' */ 489ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_KERN_FEATURE_TAG = 0x6B65726EUL, /**< 'kern' */ 490ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LFBD_FEATURE_TAG = 0x6C666264UL, /**< 'lfbd' */ 491ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LIGA_FEATURE_TAG = 0x6C696761UL, /**< 'liga' */ 492ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LJMO_FEATURE_TAG = 0x6C6A6D6FUL, /**< 'ljmo' */ 493ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LNUM_FEATURE_TAG = 0x6C6E756DUL, /**< 'lnum' */ 494ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_LOCL_FEATURE_TAG = 0x6C6F636CUL, /**< 'locl' */ 495ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MARK_FEATURE_TAG = 0x6D61726BUL, /**< 'mark' */ 496ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MED2_FEATURE_TAG = 0x6D656432UL, /**< 'med2' */ 497ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MEDI_FEATURE_TAG = 0x6D656469UL, /**< 'medi' */ 498ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MGRK_FEATURE_TAG = 0x6D67726BUL, /**< 'mgrk' */ 499ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MKMK_FEATURE_TAG = 0x6D6B6D6BUL, /**< 'mkmk' */ 500ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MSET_FEATURE_TAG = 0x6D736574UL, /**< 'mset' */ 501ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NALT_FEATURE_TAG = 0x6E616C74UL, /**< 'nalt' */ 502ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NLCK_FEATURE_TAG = 0x6E6C636BUL, /**< 'nlck' */ 503ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NUKT_FEATURE_TAG = 0x6E756B74UL, /**< 'nukt' */ 504ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NUMR_FEATURE_TAG = 0x6E756D72UL, /**< 'numr' */ 505ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ONUM_FEATURE_TAG = 0x6F6E756DUL, /**< 'onum' */ 506ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_OPBD_FEATURE_TAG = 0x6F706264UL, /**< 'opbd' */ 507ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ORDN_FEATURE_TAG = 0x6F72646EUL, /**< 'ordn' */ 508ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ORNM_FEATURE_TAG = 0x6F726E6DUL, /**< 'ornm' */ 509ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PALT_FEATURE_TAG = 0x70616C74UL, /**< 'palt' */ 510ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PCAP_FEATURE_TAG = 0x70636170UL, /**< 'pcap' */ 511ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PNUM_FEATURE_TAG = 0x706E756DUL, /**< 'pnum' */ 512ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PREF_FEATURE_TAG = 0x70726566UL, /**< 'pref' */ 513ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PRES_FEATURE_TAG = 0x70726573UL, /**< 'pres' */ 514ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PSTF_FEATURE_TAG = 0x70737466UL, /**< 'pstf' */ 515ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PSTS_FEATURE_TAG = 0x70737473UL, /**< 'psts' */ 516ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_PWID_FEATURE_TAG = 0x70776964UL, /**< 'pwid' */ 517ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_QWID_FEATURE_TAG = 0x71776964UL, /**< 'qwid' */ 518ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_RAND_FEATURE_TAG = 0x72616E64UL, /**< 'rand' */ 519ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_RLIG_FEATURE_TAG = 0x726C6967UL, /**< 'rlig' */ 520ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_RPHF_FEATURE_TAG = 0x72706866UL, /**< 'rphf' */ 5218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_RKRF_FEATURE_TAG = 0x726B7266UL, /**< 'rkrf' */ 522ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_RTBD_FEATURE_TAG = 0x72746264UL, /**< 'rtbd' */ 523ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_RTLA_FEATURE_TAG = 0x72746C61UL, /**< 'rtla' */ 524ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_RUBY_FEATURE_TAG = 0x72756279UL, /**< 'ruby' */ 525ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SALT_FEATURE_TAG = 0x73616C74UL, /**< 'salt' */ 526ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SINF_FEATURE_TAG = 0x73696E66UL, /**< 'sinf' */ 527ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SIZE_FEATURE_TAG = 0x73697A65UL, /**< 'size' */ 528ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SMCP_FEATURE_TAG = 0x736D6370UL, /**< 'smcp' */ 529ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SMPL_FEATURE_TAG = 0x736D706CUL, /**< 'smpl' */ 530ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS01_FEATURE_TAG = 0x73733031UL, /**< 'ss01' */ 531ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS02_FEATURE_TAG = 0x73733032UL, /**< 'ss02' */ 532ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS03_FEATURE_TAG = 0x73733033UL, /**< 'ss03' */ 533ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS04_FEATURE_TAG = 0x73733034UL, /**< 'ss04' */ 534ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS05_FEATURE_TAG = 0x73733035UL, /**< 'ss05' */ 535ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS06_FEATURE_TAG = 0x73733036UL, /**< 'ss06' */ 536ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS07_FEATURE_TAG = 0x73733037UL, /**< 'ss07' */ 537ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS08_FEATURE_TAG = 0x73733038UL, /**< 'ss08' */ 538ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS09_FEATURE_TAG = 0x73733039UL, /**< 'ss09' */ 539ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS10_FEATURE_TAG = 0x73733130UL, /**< 'ss10' */ 540ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS11_FEATURE_TAG = 0x73733131UL, /**< 'ss11' */ 541ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS12_FEATURE_TAG = 0x73733132UL, /**< 'ss12' */ 542ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS13_FEATURE_TAG = 0x73733133UL, /**< 'ss13' */ 543ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS14_FEATURE_TAG = 0x73733134UL, /**< 'ss14' */ 544ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS15_FEATURE_TAG = 0x73733135UL, /**< 'ss15' */ 545ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS16_FEATURE_TAG = 0x73733136UL, /**< 'ss16' */ 546ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS17_FEATURE_TAG = 0x73733137UL, /**< 'ss17' */ 547ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS18_FEATURE_TAG = 0x73733138UL, /**< 'ss18' */ 548ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS19_FEATURE_TAG = 0x73733139UL, /**< 'ss19' */ 549ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SS20_FEATURE_TAG = 0x73733230UL, /**< 'ss20' */ 550ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SUBS_FEATURE_TAG = 0x73756273UL, /**< 'subs' */ 551ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SUPS_FEATURE_TAG = 0x73757073UL, /**< 'sups' */ 552ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_SWSH_FEATURE_TAG = 0x73777368UL, /**< 'swsh' */ 553ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_TITL_FEATURE_TAG = 0x7469746CUL, /**< 'titl' */ 554ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_TJMO_FEATURE_TAG = 0x746A6D6FUL, /**< 'tjmo' */ 555ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_TNAM_FEATURE_TAG = 0x746E616DUL, /**< 'tnam' */ 556ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_TNUM_FEATURE_TAG = 0x746E756DUL, /**< 'tnum' */ 557ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_TRAD_FEATURE_TAG = 0x74726164UL, /**< 'trad' */ 558ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_TWID_FEATURE_TAG = 0x74776964UL, /**< 'twid' */ 559ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_UNIC_FEATURE_TAG = 0x756E6963UL, /**< 'unic' */ 560ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VALT_FEATURE_TAG = 0x76616C74UL, /**< 'valt' */ 561ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VATU_FEATURE_TAG = 0x76617475UL, /**< 'vatu' */ 562ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VERT_FEATURE_TAG = 0x76657274UL, /**< 'vert' */ 563ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VHAL_FEATURE_TAG = 0x7668616CUL, /**< 'vhal' */ 564ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VJMO_FEATURE_TAG = 0x766A6D6FUL, /**< 'vjmo' */ 565ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VKNA_FEATURE_TAG = 0x766B6E61UL, /**< 'vkna' */ 566ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VKRN_FEATURE_TAG = 0x766B726EUL, /**< 'vkrn' */ 567ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VPAL_FEATURE_TAG = 0x7670616CUL, /**< 'vpal' */ 568ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_VRT2_FEATURE_TAG = 0x76727432UL, /**< 'vrt2' */ 569ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ZERO_FEATURE_TAG = 0x7A65726FUL /**< 'zero' */ 570ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 571ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 572ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 5738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @internal 5748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 5758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusenum LEFeatureENUMs { 5768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_Kerning_FEATURE_ENUM = 0, /**< Requests Kerning. Formerly LayoutEngine::kTypoFlagKern */ 5778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_Ligatures_FEATURE_ENUM = 1, /**< Requests Ligatures. Formerly LayoutEngine::kTypoFlagLiga */ 5788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_CLIG_FEATURE_ENUM, /**< Feature specific enum */ 5798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_DLIG_FEATURE_ENUM, /**< Feature specific enum */ 5808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_HLIG_FEATURE_ENUM, /**< Feature specific enum */ 5818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_LIGA_FEATURE_ENUM, /**< Feature specific enum */ 5828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_RLIG_FEATURE_ENUM, /**< Feature specific enum */ 5838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SMCP_FEATURE_ENUM, /**< Feature specific enum */ 5848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_FRAC_FEATURE_ENUM, /**< Feature specific enum */ 5858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_AFRC_FEATURE_ENUM, /**< Feature specific enum */ 5868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_ZERO_FEATURE_ENUM, /**< Feature specific enum */ 5878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SWSH_FEATURE_ENUM, /**< Feature specific enum */ 5888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_CSWH_FEATURE_ENUM, /**< Feature specific enum */ 5898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SALT_FEATURE_ENUM, /**< Feature specific enum */ 5908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_NALT_FEATURE_ENUM, /**< Feature specific enum */ 5918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_RUBY_FEATURE_ENUM, /**< Feature specific enum */ 5928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SS01_FEATURE_ENUM, /**< Feature specific enum */ 5938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SS02_FEATURE_ENUM, /**< Feature specific enum */ 5948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SS03_FEATURE_ENUM, /**< Feature specific enum */ 5958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SS04_FEATURE_ENUM, /**< Feature specific enum */ 5968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SS05_FEATURE_ENUM, /**< Feature specific enum */ 5978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SS06_FEATURE_ENUM, /**< Feature specific enum */ 5988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_SS07_FEATURE_ENUM, /**< Feature specific enum */ 5998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_CHAR_FILTER_FEATURE_ENUM = 31, /**< Apply CharSubstitutionFilter */ 6018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius LE_FEATURE_ENUM_MAX = LE_CHAR_FILTER_FEATURE_ENUM 6028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}; 6038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/** 6068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Flags for typographic features. 6078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @internal 6088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @{ 6098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 6108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_Kerning_FEATURE_FLAG (1 << LE_Kerning_FEATURE_ENUM) 6118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_Ligatures_FEATURE_FLAG (1 << LE_Ligatures_FEATURE_ENUM) 6128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_CLIG_FEATURE_FLAG (1 << LE_CLIG_FEATURE_ENUM) 6138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_DLIG_FEATURE_FLAG (1 << LE_DLIG_FEATURE_ENUM) 6148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_HLIG_FEATURE_FLAG (1 << LE_HLIG_FEATURE_ENUM) 6158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_LIGA_FEATURE_FLAG (1 << LE_LIGA_FEATURE_ENUM) 6168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_RLIG_FEATURE_FLAG (1 << LE_RLIG_FEATURE_ENUM) 6178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SMCP_FEATURE_FLAG (1 << LE_SMCP_FEATURE_ENUM) 6188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_FRAC_FEATURE_FLAG (1 << LE_FRAC_FEATURE_ENUM) 6198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_AFRC_FEATURE_FLAG (1 << LE_AFRC_FEATURE_ENUM) 6208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_ZERO_FEATURE_FLAG (1 << LE_ZERO_FEATURE_ENUM) 6218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SWSH_FEATURE_FLAG (1 << LE_SWSH_FEATURE_ENUM) 6228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_CSWH_FEATURE_FLAG (1 << LE_CSWH_FEATURE_ENUM) 6238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SALT_FEATURE_FLAG (1 << LE_SALT_FEATURE_ENUM) 6248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_NALT_FEATURE_FLAG (1 << LE_NALT_FEATURE_ENUM) 6258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_RUBY_FEATURE_FLAG (1 << LE_RUBY_FEATURE_ENUM) 6268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SS01_FEATURE_FLAG (1 << LE_SS01_FEATURE_ENUM) 6278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SS02_FEATURE_FLAG (1 << LE_SS02_FEATURE_ENUM) 6288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SS03_FEATURE_FLAG (1 << LE_SS03_FEATURE_ENUM) 6298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SS04_FEATURE_FLAG (1 << LE_SS04_FEATURE_ENUM) 6308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SS05_FEATURE_FLAG (1 << LE_SS05_FEATURE_ENUM) 6318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SS06_FEATURE_FLAG (1 << LE_SS06_FEATURE_ENUM) 6328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_SS07_FEATURE_FLAG (1 << LE_SS07_FEATURE_ENUM) 6338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#define LE_CHAR_FILTER_FEATURE_FLAG (1 << LE_CHAR_FILTER_FEATURE_ENUM) 6358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/** 6368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @} 6378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */ 6388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 6398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/** 640ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Error codes returned by the LayoutEngine. 641ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 642ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 643ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 644ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruenum LEErrorCode { 645ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* informational */ 646ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NO_SUBFONT_WARNING = U_USING_DEFAULT_WARNING, /**< The font does not contain subfonts. */ 647ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 648ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* success */ 649ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NO_ERROR = U_ZERO_ERROR, /**< No error, no warning. */ 650ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 651ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* failures */ 652ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_ILLEGAL_ARGUMENT_ERROR = U_ILLEGAL_ARGUMENT_ERROR, /**< An illegal argument was detected. */ 653ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MEMORY_ALLOCATION_ERROR = U_MEMORY_ALLOCATION_ERROR, /**< Memory allocation error. */ 654ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_INDEX_OUT_OF_BOUNDS_ERROR = U_INDEX_OUTOFBOUNDS_ERROR, /**< Trying to access an index that is out of bounds. */ 655ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_NO_LAYOUT_ERROR = U_UNSUPPORTED_ERROR, /**< You must call layoutChars() first. */ 656ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_INTERNAL_ERROR = U_INTERNAL_PROGRAM_ERROR, /**< An internal error was encountered. */ 657ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_FONT_FILE_NOT_FOUND_ERROR = U_FILE_ACCESS_ERROR, /**< The requested font file cannot be opened. */ 658ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru LE_MISSING_FONT_TABLE_ERROR = U_MISSING_RESOURCE_ERROR /**< The requested font table does not exist. */ 659ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 660ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 661103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef __cplusplus 662ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 663ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Error codes returned by the LayoutEngine. 664ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 665ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 666ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 667ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef enum LEErrorCode LEErrorCode; 668ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 669ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 670ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 671ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to test for the success of a LayoutEngine call. 672ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 673ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 674ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 675ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_SUCCESS(code) (U_SUCCESS((UErrorCode)code)) 676ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 677ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 678ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A convenience macro to test for the failure of a LayoutEngine call. 679ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 680ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 2.4 681ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 682ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LE_FAILURE(code) (U_FAILURE((UErrorCode)code)) 683ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 684ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 685