Behdad Esfahbod | 64aef3a | 2008-01-23 16:14:38 -0500 | [diff] [blame] | 1 | /* |
Behdad Esfahbod | 2409d5f | 2011-04-21 17:14:28 -0400 | [diff] [blame] | 2 | * Copyright © 2007,2008,2009 Red Hat, Inc. |
| 3 | * Copyright © 2011 Google, Inc. |
Behdad Esfahbod | 64aef3a | 2008-01-23 16:14:38 -0500 | [diff] [blame] | 4 | * |
Behdad Esfahbod | c755cb3 | 2010-04-22 00:11:43 -0400 | [diff] [blame] | 5 | * This is part of HarfBuzz, a text shaping library. |
Behdad Esfahbod | 64aef3a | 2008-01-23 16:14:38 -0500 | [diff] [blame] | 6 | * |
| 7 | * Permission is hereby granted, without written agreement and without |
| 8 | * license or royalty fees, to use, copy, modify, and distribute this |
| 9 | * software and its documentation for any purpose, provided that the |
| 10 | * above copyright notice and the following two paragraphs appear in |
| 11 | * all copies of this software. |
| 12 | * |
| 13 | * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR |
| 14 | * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES |
| 15 | * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN |
| 16 | * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH |
| 17 | * DAMAGE. |
| 18 | * |
| 19 | * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
| 20 | * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
| 21 | * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS |
| 22 | * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO |
| 23 | * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
| 24 | * |
| 25 | * Red Hat Author(s): Behdad Esfahbod |
Behdad Esfahbod | 2409d5f | 2011-04-21 17:14:28 -0400 | [diff] [blame] | 26 | * Google Author(s): Behdad Esfahbod |
Behdad Esfahbod | 64aef3a | 2008-01-23 16:14:38 -0500 | [diff] [blame] | 27 | */ |
| 28 | |
Behdad Esfahbod | 8dd1c8b | 2008-01-23 05:00:30 -0500 | [diff] [blame] | 29 | #ifndef HB_COMMON_H |
| 30 | #define HB_COMMON_H |
| 31 | |
Behdad Esfahbod | acdba3f | 2010-07-23 15:11:18 -0400 | [diff] [blame] | 32 | # ifdef __cplusplus |
| 33 | # define HB_BEGIN_DECLS extern "C" { |
| 34 | # define HB_END_DECLS } |
| 35 | # else /* !__cplusplus */ |
| 36 | # define HB_BEGIN_DECLS |
| 37 | # define HB_END_DECLS |
| 38 | # endif /* !__cplusplus */ |
| 39 | |
| 40 | HB_BEGIN_DECLS |
| 41 | |
| 42 | |
Behdad Esfahbod | cc4c096 | 2009-11-02 18:13:17 -0500 | [diff] [blame] | 43 | #ifdef _MSC_VER |
Behdad Esfahbod | cc4c096 | 2009-11-02 18:13:17 -0500 | [diff] [blame] | 44 | typedef signed char int8_t; |
| 45 | typedef unsigned char uint8_t; |
| 46 | typedef signed short int16_t; |
| 47 | typedef unsigned short uint16_t; |
| 48 | typedef signed int int32_t; |
| 49 | typedef unsigned int uint32_t; |
Behdad Esfahbod | ffbe0a8 | 2009-11-03 10:52:45 -0500 | [diff] [blame] | 50 | typedef signed long long int64_t; |
| 51 | typedef unsigned long long uint64_t; |
Behdad Esfahbod | cc4c096 | 2009-11-02 18:13:17 -0500 | [diff] [blame] | 52 | #else |
Behdad Esfahbod | 8dd1c8b | 2008-01-23 05:00:30 -0500 | [diff] [blame] | 53 | #include <stdint.h> |
Behdad Esfahbod | cc4c096 | 2009-11-02 18:13:17 -0500 | [diff] [blame] | 54 | #endif |
Behdad Esfahbod | 8dd1c8b | 2008-01-23 05:00:30 -0500 | [diff] [blame] | 55 | |
Behdad Esfahbod | 590d55c | 2008-01-24 19:13:50 -0500 | [diff] [blame] | 56 | typedef int hb_bool_t; |
| 57 | |
Behdad Esfahbod | 8e4bb3c | 2011-04-11 17:55:58 -0400 | [diff] [blame] | 58 | typedef uint32_t hb_codepoint_t; |
| 59 | typedef int32_t hb_position_t; |
| 60 | typedef uint32_t hb_mask_t; |
| 61 | |
| 62 | typedef union _hb_var_int_t { |
| 63 | uint32_t u32; |
| 64 | int32_t i32; |
| 65 | uint16_t u16[2]; |
| 66 | int16_t i16[2]; |
| 67 | uint8_t u8[4]; |
| 68 | int8_t i8[4]; |
| 69 | } hb_var_int_t; |
| 70 | |
Behdad Esfahbod | 8e4bb3c | 2011-04-11 17:55:58 -0400 | [diff] [blame] | 71 | |
| 72 | /* hb_tag_t */ |
| 73 | |
Behdad Esfahbod | 590d55c | 2008-01-24 19:13:50 -0500 | [diff] [blame] | 74 | typedef uint32_t hb_tag_t; |
Behdad Esfahbod | 8e4bb3c | 2011-04-11 17:55:58 -0400 | [diff] [blame] | 75 | |
Behdad Esfahbod | d77b762 | 2011-04-11 12:29:52 -0400 | [diff] [blame] | 76 | #define HB_TAG(a,b,c,d) ((hb_tag_t)((((uint8_t)(a))<<24)|(((uint8_t)(b))<<16)|(((uint8_t)(c))<<8)|((uint8_t)(d)))) |
Behdad Esfahbod | d3b30be | 2011-05-11 18:06:12 -0400 | [diff] [blame] | 77 | #define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag)) |
Behdad Esfahbod | 4188096 | 2011-04-11 14:58:28 -0400 | [diff] [blame] | 78 | |
Behdad Esfahbod | 0ead481 | 2009-08-02 17:41:36 -0400 | [diff] [blame] | 79 | #define HB_TAG_NONE HB_TAG(0,0,0,0) |
Behdad Esfahbod | 590d55c | 2008-01-24 19:13:50 -0500 | [diff] [blame] | 80 | |
Behdad Esfahbod | 83f3467 | 2010-05-21 13:43:49 +0100 | [diff] [blame] | 81 | hb_tag_t hb_tag_from_string (const char *s); |
| 82 | |
| 83 | |
Behdad Esfahbod | 8e4bb3c | 2011-04-11 17:55:58 -0400 | [diff] [blame] | 84 | /* hb_direction_t */ |
Behdad Esfahbod | 0090dc0 | 2009-07-30 16:28:45 -0400 | [diff] [blame] | 85 | |
Behdad Esfahbod | ff44f88 | 2009-11-06 19:48:16 -0500 | [diff] [blame] | 86 | typedef enum _hb_direction_t { |
Behdad Esfahbod | 3286fc0 | 2011-03-16 14:53:32 -0300 | [diff] [blame] | 87 | HB_DIRECTION_INVALID = -1, |
| 88 | HB_DIRECTION_LTR = 0, |
Behdad Esfahbod | ff44f88 | 2009-11-06 19:48:16 -0500 | [diff] [blame] | 89 | HB_DIRECTION_RTL, |
| 90 | HB_DIRECTION_TTB, |
| 91 | HB_DIRECTION_BTT |
| 92 | } hb_direction_t; |
| 93 | |
Behdad Esfahbod | 39a840a | 2011-04-27 14:48:19 -0400 | [diff] [blame] | 94 | hb_direction_t |
| 95 | hb_direction_from_string (const char *str); |
| 96 | |
| 97 | const char * |
| 98 | hb_direction_to_string (hb_direction_t direction); |
| 99 | |
Behdad Esfahbod | 1ce4dc9 | 2010-05-12 18:29:25 -0400 | [diff] [blame] | 100 | #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 0) |
| 101 | #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 2) |
| 102 | #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 0) |
| 103 | #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 1) |
Behdad Esfahbod | 22da7fd | 2010-05-12 18:23:21 -0400 | [diff] [blame] | 104 | #define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1)) |
Behdad Esfahbod | ff44f88 | 2009-11-06 19:48:16 -0500 | [diff] [blame] | 105 | |
| 106 | |
Behdad Esfahbod | 8e4bb3c | 2011-04-11 17:55:58 -0400 | [diff] [blame] | 107 | /* hb_language_t */ |
| 108 | |
Behdad Esfahbod | 3cbdf70 | 2011-04-15 12:32:06 -0400 | [diff] [blame] | 109 | typedef struct _hb_language_t *hb_language_t; |
Behdad Esfahbod | 8e4bb3c | 2011-04-11 17:55:58 -0400 | [diff] [blame] | 110 | |
| 111 | hb_language_t |
| 112 | hb_language_from_string (const char *str); |
| 113 | |
| 114 | const char * |
| 115 | hb_language_to_string (hb_language_t language); |
Behdad Esfahbod | 6cb8c34 | 2010-10-27 14:27:03 -0400 | [diff] [blame] | 116 | |
Behdad Esfahbod | 1a64f6e | 2011-05-13 22:55:32 -0400 | [diff] [blame^] | 117 | #define HB_LANGUAGE_INVALID ((hb_language_t) NULL) |
| 118 | |
Behdad Esfahbod | 34fb552 | 2011-05-06 00:04:28 -0400 | [diff] [blame] | 119 | hb_language_t |
| 120 | hb_language_get_default (void); |
| 121 | |
Behdad Esfahbod | 6cb8c34 | 2010-10-27 14:27:03 -0400 | [diff] [blame] | 122 | |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 123 | /* hb_unicode_general_category_t */ |
| 124 | |
| 125 | typedef enum |
| 126 | { |
| 127 | HB_UNICODE_GENERAL_CATEGORY_CONTROL, /* Cc */ |
| 128 | HB_UNICODE_GENERAL_CATEGORY_FORMAT, /* Cf */ |
| 129 | HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, /* Cn */ |
| 130 | HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, /* Co */ |
| 131 | HB_UNICODE_GENERAL_CATEGORY_SURROGATE, /* Cs */ |
| 132 | HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, /* Ll */ |
| 133 | HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, /* Lm */ |
| 134 | HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, /* Lo */ |
| 135 | HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, /* Lt */ |
| 136 | HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, /* Lu */ |
| 137 | HB_UNICODE_GENERAL_CATEGORY_COMBINING_MARK, /* Mc */ |
| 138 | HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, /* Me */ |
| 139 | HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, /* Mn */ |
| 140 | HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, /* Nd */ |
| 141 | HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, /* Nl */ |
| 142 | HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, /* No */ |
| 143 | HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, /* Pc */ |
| 144 | HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, /* Pd */ |
| 145 | HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, /* Pe */ |
| 146 | HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, /* Pf */ |
| 147 | HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, /* Pi */ |
| 148 | HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, /* Po */ |
| 149 | HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, /* Ps */ |
| 150 | HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, /* Sc */ |
| 151 | HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, /* Sk */ |
| 152 | HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, /* Sm */ |
| 153 | HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, /* So */ |
| 154 | HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, /* Zl */ |
| 155 | HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, /* Zp */ |
| 156 | HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR /* Zs */ |
| 157 | } hb_unicode_general_category_t; |
| 158 | |
| 159 | |
| 160 | /* hb_script_t */ |
| 161 | |
Behdad Esfahbod | d02985e | 2011-05-02 12:35:14 -0400 | [diff] [blame] | 162 | /* http://unicode.org/iso15924/ */ |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 163 | typedef enum |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 164 | { |
| 165 | HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'), |
Behdad Esfahbod | d02985e | 2011-05-02 12:35:14 -0400 | [diff] [blame] | 166 | HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'), |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 167 | HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'), |
| 168 | HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'), |
| 169 | HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'), |
| 170 | HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'), |
| 171 | HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'), |
Behdad Esfahbod | d02985e | 2011-05-02 12:35:14 -0400 | [diff] [blame] | 172 | HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'), |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 173 | HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'), |
| 174 | HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'), |
| 175 | HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'), |
| 176 | HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'), |
| 177 | HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'), |
| 178 | HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'), |
| 179 | HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'), |
| 180 | HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'), |
| 181 | HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'), |
| 182 | HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'), |
| 183 | HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'), |
| 184 | HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'), |
| 185 | HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'), |
| 186 | HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'), |
| 187 | HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'), |
| 188 | HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'), |
| 189 | HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'), |
| 190 | HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'), |
| 191 | HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'), |
| 192 | HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'), |
| 193 | HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'), |
| 194 | HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'), |
| 195 | HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'), |
| 196 | HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'), |
| 197 | HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'), |
| 198 | HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'), |
| 199 | HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'), |
| 200 | HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'), |
| 201 | HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'), |
| 202 | HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'), |
| 203 | HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'), |
| 204 | HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'), |
| 205 | HB_SCRIPT_CANADIAN_ABORIGINAL = HB_TAG ('C','a','n','s'), |
| 206 | HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'), |
| 207 | HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'), |
| 208 | HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'), |
| 209 | HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'), |
| 210 | HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'), |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 211 | |
| 212 | /* Unicode-4.0 additions */ |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 213 | HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'), |
| 214 | HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'), |
| 215 | HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'), |
| 216 | HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'), |
| 217 | HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'), |
| 218 | HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'), |
| 219 | HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'), |
| 220 | HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'), |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 221 | |
| 222 | /* Unicode-4.1 additions */ |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 223 | HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'), |
| 224 | HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'), |
| 225 | HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'), |
| 226 | HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'), |
| 227 | HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'), |
| 228 | HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'), |
| 229 | HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'), |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 230 | |
| 231 | /* Unicode-5.0 additions */ |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 232 | HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'), |
| 233 | HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'), |
| 234 | HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'), |
| 235 | HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'), |
| 236 | HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'), |
| 237 | HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'), |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 238 | |
| 239 | /* Unicode-5.1 additions */ |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 240 | HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'), |
| 241 | HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'), |
| 242 | HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'), |
| 243 | HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'), |
| 244 | HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'), |
| 245 | HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'), |
| 246 | HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'), |
| 247 | HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'), |
| 248 | HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'), |
| 249 | HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'), |
| 250 | HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'), |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 251 | |
| 252 | /* Unicode-5.2 additions */ |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 253 | HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'), |
| 254 | HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'), |
| 255 | HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'), |
| 256 | HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'), |
| 257 | HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'), |
| 258 | HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'), |
| 259 | HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'), |
| 260 | HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'), |
| 261 | HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'), |
| 262 | HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'), |
| 263 | HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'), |
| 264 | HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'), |
| 265 | HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'), |
| 266 | HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'), |
| 267 | HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'), |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 268 | |
| 269 | /* Unicode-6.0 additions */ |
Behdad Esfahbod | 62879ee | 2011-04-18 23:40:21 -0400 | [diff] [blame] | 270 | HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'), |
| 271 | HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'), |
| 272 | HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'), |
| 273 | |
| 274 | /* No script set */ |
| 275 | HB_SCRIPT_INVALID = HB_TAG_NONE |
Behdad Esfahbod | 00bec2c | 2011-04-15 19:16:54 -0400 | [diff] [blame] | 276 | } hb_script_t; |
| 277 | |
| 278 | |
| 279 | /* Script functions */ |
| 280 | |
| 281 | hb_script_t |
| 282 | hb_script_from_iso15924_tag (hb_tag_t tag); |
| 283 | |
| 284 | /* suger for tag_from_string() then script_from_iso15924_tag */ |
| 285 | hb_script_t |
| 286 | hb_script_from_string (const char *s); |
| 287 | |
| 288 | hb_tag_t |
| 289 | hb_script_to_iso15924_tag (hb_script_t script); |
| 290 | |
| 291 | hb_direction_t |
| 292 | hb_script_get_horizontal_direction (hb_script_t script); |
| 293 | |
| 294 | |
Behdad Esfahbod | 29c67d3 | 2011-04-27 21:22:32 -0400 | [diff] [blame] | 295 | /* User data */ |
| 296 | |
| 297 | typedef struct _hb_user_data_key_t { |
| 298 | char unused; |
| 299 | } hb_user_data_key_t; |
| 300 | |
| 301 | typedef void (*hb_destroy_func_t) (void *user_data); |
| 302 | |
| 303 | |
Behdad Esfahbod | acdba3f | 2010-07-23 15:11:18 -0400 | [diff] [blame] | 304 | HB_END_DECLS |
| 305 | |
Behdad Esfahbod | 8dd1c8b | 2008-01-23 05:00:30 -0500 | [diff] [blame] | 306 | #endif /* HB_COMMON_H */ |