1 #ifndef LIBRARIES_HARFBUZZ_H 2 #define LIBRARIES_HARFBUZZ_H 3 4 /* 5 6 MorphOS Shared HarfBuzz 7 8 harfbuzz.library include 9 10 Copyright © 2016-2022 The MorphOS Development Team, All Rights Reserved. 11 12 */ 13 14 #include <stdint.h> 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 #define HB_VERSION_MAJOR 3 21 #define HB_VERSION_MINOR 3 22 #define HB_VERSION_MICRO 2 23 24 #define HB_VERSION_STRING "3.3.2" 25 26 #define HB_VERSION_ATLEAST(major,minor,micro) \ 27 ((major)*10000+(minor)*100+(micro) <= \ 28 HB_VERSION_MAJOR*10000+HB_VERSION_MINOR*100+HB_VERSION_MICRO) 29 30 #if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) 31 #define HB_DEPRECATED __attribute__((__deprecated__)) 32 #else 33 #define HB_DEPRECATED 34 #endif 35 36 #if defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) 37 #define HB_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead"))) 38 #else 39 #define HB_DEPRECATED_FOR(f) HB_DEPRECATED 40 #endif 41 42 typedef int hb_bool_t; 43 44 typedef uint32_t hb_codepoint_t; 45 typedef int32_t hb_position_t; 46 typedef uint32_t hb_mask_t; 47 48 typedef union _hb_var_int_t { 49 uint32_t u32; 50 int32_t i32; 51 uint16_t u16[2]; 52 int16_t i16[2]; 53 uint8_t u8[4]; 54 int8_t i8[4]; 55 } hb_var_int_t; 56 57 typedef uint32_t hb_tag_t; 58 59 #define HB_TAG(c1,c2,c3,c4) ((hb_tag_t)((((uint8_t)(c1))<<24)|(((uint8_t)(c2))<<16)|(((uint8_t)(c3))<<8)|((uint8_t)(c4)))) 60 #define HB_UNTAG(tag) ((uint8_t)((tag)>>24)), ((uint8_t)((tag)>>16)), ((uint8_t)((tag)>>8)), ((uint8_t)(tag)) 61 62 #define HB_TAG_NONE HB_TAG(0,0,0,0) 63 #define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff) 64 #define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff) 65 66 typedef enum { 67 HB_DIRECTION_INVALID = 0, 68 HB_DIRECTION_LTR = 4, 69 HB_DIRECTION_RTL, 70 HB_DIRECTION_TTB, 71 HB_DIRECTION_BTT 72 } hb_direction_t; 73 74 #define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4) 75 #define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4) 76 #define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6) 77 #define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4) 78 #define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5) 79 #define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1)) 80 81 typedef const struct hb_language_impl_t *hb_language_t; 82 83 #define HB_LANGUAGE_INVALID ((hb_language_t) 0) 84 85 typedef enum 86 { 87 HB_SCRIPT_COMMON = HB_TAG ('Z','y','y','y'), 88 HB_SCRIPT_INHERITED = HB_TAG ('Z','i','n','h'), 89 HB_SCRIPT_UNKNOWN = HB_TAG ('Z','z','z','z'), 90 HB_SCRIPT_ARABIC = HB_TAG ('A','r','a','b'), 91 HB_SCRIPT_ARMENIAN = HB_TAG ('A','r','m','n'), 92 HB_SCRIPT_BENGALI = HB_TAG ('B','e','n','g'), 93 HB_SCRIPT_CYRILLIC = HB_TAG ('C','y','r','l'), 94 HB_SCRIPT_DEVANAGARI = HB_TAG ('D','e','v','a'), 95 HB_SCRIPT_GEORGIAN = HB_TAG ('G','e','o','r'), 96 HB_SCRIPT_GREEK = HB_TAG ('G','r','e','k'), 97 HB_SCRIPT_GUJARATI = HB_TAG ('G','u','j','r'), 98 HB_SCRIPT_GURMUKHI = HB_TAG ('G','u','r','u'), 99 HB_SCRIPT_HANGUL = HB_TAG ('H','a','n','g'), 100 HB_SCRIPT_HAN = HB_TAG ('H','a','n','i'), 101 HB_SCRIPT_HEBREW = HB_TAG ('H','e','b','r'), 102 HB_SCRIPT_HIRAGANA = HB_TAG ('H','i','r','a'), 103 HB_SCRIPT_KANNADA = HB_TAG ('K','n','d','a'), 104 HB_SCRIPT_KATAKANA = HB_TAG ('K','a','n','a'), 105 HB_SCRIPT_LAO = HB_TAG ('L','a','o','o'), 106 HB_SCRIPT_LATIN = HB_TAG ('L','a','t','n'), 107 HB_SCRIPT_MALAYALAM = HB_TAG ('M','l','y','m'), 108 HB_SCRIPT_ORIYA = HB_TAG ('O','r','y','a'), 109 HB_SCRIPT_TAMIL = HB_TAG ('T','a','m','l'), 110 HB_SCRIPT_TELUGU = HB_TAG ('T','e','l','u'), 111 HB_SCRIPT_THAI = HB_TAG ('T','h','a','i'), 112 HB_SCRIPT_TIBETAN = HB_TAG ('T','i','b','t'), 113 HB_SCRIPT_BOPOMOFO = HB_TAG ('B','o','p','o'), 114 HB_SCRIPT_BRAILLE = HB_TAG ('B','r','a','i'), 115 HB_SCRIPT_CANADIAN_SYLLABICS = HB_TAG ('C','a','n','s'), 116 HB_SCRIPT_CHEROKEE = HB_TAG ('C','h','e','r'), 117 HB_SCRIPT_ETHIOPIC = HB_TAG ('E','t','h','i'), 118 HB_SCRIPT_KHMER = HB_TAG ('K','h','m','r'), 119 HB_SCRIPT_MONGOLIAN = HB_TAG ('M','o','n','g'), 120 HB_SCRIPT_MYANMAR = HB_TAG ('M','y','m','r'), 121 HB_SCRIPT_OGHAM = HB_TAG ('O','g','a','m'), 122 HB_SCRIPT_RUNIC = HB_TAG ('R','u','n','r'), 123 HB_SCRIPT_SINHALA = HB_TAG ('S','i','n','h'), 124 HB_SCRIPT_SYRIAC = HB_TAG ('S','y','r','c'), 125 HB_SCRIPT_THAANA = HB_TAG ('T','h','a','a'), 126 HB_SCRIPT_YI = HB_TAG ('Y','i','i','i'), 127 HB_SCRIPT_DESERET = HB_TAG ('D','s','r','t'), 128 HB_SCRIPT_GOTHIC = HB_TAG ('G','o','t','h'), 129 HB_SCRIPT_OLD_ITALIC = HB_TAG ('I','t','a','l'), 130 HB_SCRIPT_BUHID = HB_TAG ('B','u','h','d'), 131 HB_SCRIPT_HANUNOO = HB_TAG ('H','a','n','o'), 132 HB_SCRIPT_TAGALOG = HB_TAG ('T','g','l','g'), 133 HB_SCRIPT_TAGBANWA = HB_TAG ('T','a','g','b'), 134 HB_SCRIPT_CYPRIOT = HB_TAG ('C','p','r','t'), 135 HB_SCRIPT_LIMBU = HB_TAG ('L','i','m','b'), 136 HB_SCRIPT_LINEAR_B = HB_TAG ('L','i','n','b'), 137 HB_SCRIPT_OSMANYA = HB_TAG ('O','s','m','a'), 138 HB_SCRIPT_SHAVIAN = HB_TAG ('S','h','a','w'), 139 HB_SCRIPT_TAI_LE = HB_TAG ('T','a','l','e'), 140 HB_SCRIPT_UGARITIC = HB_TAG ('U','g','a','r'), 141 HB_SCRIPT_BUGINESE = HB_TAG ('B','u','g','i'), 142 HB_SCRIPT_COPTIC = HB_TAG ('C','o','p','t'), 143 HB_SCRIPT_GLAGOLITIC = HB_TAG ('G','l','a','g'), 144 HB_SCRIPT_KHAROSHTHI = HB_TAG ('K','h','a','r'), 145 HB_SCRIPT_NEW_TAI_LUE = HB_TAG ('T','a','l','u'), 146 HB_SCRIPT_OLD_PERSIAN = HB_TAG ('X','p','e','o'), 147 HB_SCRIPT_SYLOTI_NAGRI = HB_TAG ('S','y','l','o'), 148 HB_SCRIPT_TIFINAGH = HB_TAG ('T','f','n','g'), 149 HB_SCRIPT_BALINESE = HB_TAG ('B','a','l','i'), 150 HB_SCRIPT_CUNEIFORM = HB_TAG ('X','s','u','x'), 151 HB_SCRIPT_NKO = HB_TAG ('N','k','o','o'), 152 HB_SCRIPT_PHAGS_PA = HB_TAG ('P','h','a','g'), 153 HB_SCRIPT_PHOENICIAN = HB_TAG ('P','h','n','x'), 154 HB_SCRIPT_CARIAN = HB_TAG ('C','a','r','i'), 155 HB_SCRIPT_CHAM = HB_TAG ('C','h','a','m'), 156 HB_SCRIPT_KAYAH_LI = HB_TAG ('K','a','l','i'), 157 HB_SCRIPT_LEPCHA = HB_TAG ('L','e','p','c'), 158 HB_SCRIPT_LYCIAN = HB_TAG ('L','y','c','i'), 159 HB_SCRIPT_LYDIAN = HB_TAG ('L','y','d','i'), 160 HB_SCRIPT_OL_CHIKI = HB_TAG ('O','l','c','k'), 161 HB_SCRIPT_REJANG = HB_TAG ('R','j','n','g'), 162 HB_SCRIPT_SAURASHTRA = HB_TAG ('S','a','u','r'), 163 HB_SCRIPT_SUNDANESE = HB_TAG ('S','u','n','d'), 164 HB_SCRIPT_VAI = HB_TAG ('V','a','i','i'), 165 HB_SCRIPT_AVESTAN = HB_TAG ('A','v','s','t'), 166 HB_SCRIPT_BAMUM = HB_TAG ('B','a','m','u'), 167 HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = HB_TAG ('E','g','y','p'), 168 HB_SCRIPT_IMPERIAL_ARAMAIC = HB_TAG ('A','r','m','i'), 169 HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = HB_TAG ('P','h','l','i'), 170 HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = HB_TAG ('P','r','t','i'), 171 HB_SCRIPT_JAVANESE = HB_TAG ('J','a','v','a'), 172 HB_SCRIPT_KAITHI = HB_TAG ('K','t','h','i'), 173 HB_SCRIPT_LISU = HB_TAG ('L','i','s','u'), 174 HB_SCRIPT_MEETEI_MAYEK = HB_TAG ('M','t','e','i'), 175 HB_SCRIPT_OLD_SOUTH_ARABIAN = HB_TAG ('S','a','r','b'), 176 HB_SCRIPT_OLD_TURKIC = HB_TAG ('O','r','k','h'), 177 HB_SCRIPT_SAMARITAN = HB_TAG ('S','a','m','r'), 178 HB_SCRIPT_TAI_THAM = HB_TAG ('L','a','n','a'), 179 HB_SCRIPT_TAI_VIET = HB_TAG ('T','a','v','t'), 180 HB_SCRIPT_BATAK = HB_TAG ('B','a','t','k'), 181 HB_SCRIPT_BRAHMI = HB_TAG ('B','r','a','h'), 182 HB_SCRIPT_MANDAIC = HB_TAG ('M','a','n','d'), 183 HB_SCRIPT_CHAKMA = HB_TAG ('C','a','k','m'), 184 HB_SCRIPT_MEROITIC_CURSIVE = HB_TAG ('M','e','r','c'), 185 HB_SCRIPT_MEROITIC_HIEROGLYPHS = HB_TAG ('M','e','r','o'), 186 HB_SCRIPT_MIAO = HB_TAG ('P','l','r','d'), 187 HB_SCRIPT_SHARADA = HB_TAG ('S','h','r','d'), 188 HB_SCRIPT_SORA_SOMPENG = HB_TAG ('S','o','r','a'), 189 HB_SCRIPT_TAKRI = HB_TAG ('T','a','k','r'), 190 HB_SCRIPT_BASSA_VAH = HB_TAG ('B','a','s','s'), 191 HB_SCRIPT_CAUCASIAN_ALBANIAN = HB_TAG ('A','g','h','b'), 192 HB_SCRIPT_DUPLOYAN = HB_TAG ('D','u','p','l'), 193 HB_SCRIPT_ELBASAN = HB_TAG ('E','l','b','a'), 194 HB_SCRIPT_GRANTHA = HB_TAG ('G','r','a','n'), 195 HB_SCRIPT_KHOJKI = HB_TAG ('K','h','o','j'), 196 HB_SCRIPT_KHUDAWADI = HB_TAG ('S','i','n','d'), 197 HB_SCRIPT_LINEAR_A = HB_TAG ('L','i','n','a'), 198 HB_SCRIPT_MAHAJANI = HB_TAG ('M','a','h','j'), 199 HB_SCRIPT_MANICHAEAN = HB_TAG ('M','a','n','i'), 200 HB_SCRIPT_MENDE_KIKAKUI = HB_TAG ('M','e','n','d'), 201 HB_SCRIPT_MODI = HB_TAG ('M','o','d','i'), 202 HB_SCRIPT_MRO = HB_TAG ('M','r','o','o'), 203 HB_SCRIPT_NABATAEAN = HB_TAG ('N','b','a','t'), 204 HB_SCRIPT_OLD_NORTH_ARABIAN = HB_TAG ('N','a','r','b'), 205 HB_SCRIPT_OLD_PERMIC = HB_TAG ('P','e','r','m'), 206 HB_SCRIPT_PAHAWH_HMONG = HB_TAG ('H','m','n','g'), 207 HB_SCRIPT_PALMYRENE = HB_TAG ('P','a','l','m'), 208 HB_SCRIPT_PAU_CIN_HAU = HB_TAG ('P','a','u','c'), 209 HB_SCRIPT_PSALTER_PAHLAVI = HB_TAG ('P','h','l','p'), 210 HB_SCRIPT_SIDDHAM = HB_TAG ('S','i','d','d'), 211 HB_SCRIPT_TIRHUTA = HB_TAG ('T','i','r','h'), 212 HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'), 213 HB_SCRIPT_AHOM = HB_TAG ('A','h','o','m'), 214 HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = HB_TAG ('H','l','u','w'), 215 HB_SCRIPT_HATRAN = HB_TAG ('H','a','t','r'), 216 HB_SCRIPT_MULTANI = HB_TAG ('M','u','l','t'), 217 HB_SCRIPT_OLD_HUNGARIAN = HB_TAG ('H','u','n','g'), 218 HB_SCRIPT_SIGNWRITING = HB_TAG ('S','g','n','w'), 219 HB_SCRIPT_ADLAM = HB_TAG ('A','d','l','m'), 220 HB_SCRIPT_BHAIKSUKI = HB_TAG ('B','h','k','s'), 221 HB_SCRIPT_MARCHEN = HB_TAG ('M','a','r','c'), 222 HB_SCRIPT_OSAGE = HB_TAG ('O','s','g','e'), 223 HB_SCRIPT_TANGUT = HB_TAG ('T','a','n','g'), 224 HB_SCRIPT_NEWA = HB_TAG ('N','e','w','a'), 225 HB_SCRIPT_MASARAM_GONDI = HB_TAG ('G','o','n','m'), 226 HB_SCRIPT_NUSHU = HB_TAG ('N','s','h','u'), 227 HB_SCRIPT_SOYOMBO = HB_TAG ('S','o','y','o'), 228 HB_SCRIPT_ZANABAZAR_SQUARE = HB_TAG ('Z','a','n','b'), 229 HB_SCRIPT_DOGRA = HB_TAG ('D','o','g','r'), 230 HB_SCRIPT_GUNJALA_GONDI = HB_TAG ('G','o','n','g'), 231 HB_SCRIPT_HANIFI_ROHINGYA = HB_TAG ('R','o','h','g'), 232 HB_SCRIPT_MAKASAR = HB_TAG ('M','a','k','a'), 233 HB_SCRIPT_MEDEFAIDRIN = HB_TAG ('M','e','d','f'), 234 HB_SCRIPT_OLD_SOGDIAN = HB_TAG ('S','o','g','o'), 235 HB_SCRIPT_SOGDIAN = HB_TAG ('S','o','g','d'), 236 HB_SCRIPT_ELYMAIC = HB_TAG ('E','l','y','m'), 237 HB_SCRIPT_NANDINAGARI = HB_TAG ('N','a','n','d'), 238 HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = HB_TAG ('H','m','n','p'), 239 HB_SCRIPT_WANCHO = HB_TAG ('W','c','h','o'), 240 HB_SCRIPT_CHORASMIAN = HB_TAG ('C','h','r','s'), 241 HB_SCRIPT_DIVES_AKURU = HB_TAG ('D','i','a','k'), 242 HB_SCRIPT_KHITAN_SMALL_SCRIPT = HB_TAG ('K','i','t','s'), 243 HB_SCRIPT_YEZIDI = HB_TAG ('Y','e','z','i'), 244 HB_SCRIPT_CYPRO_MINOAN = HB_TAG ('C','p','m','n'), 245 HB_SCRIPT_OLD_UYGHUR = HB_TAG ('O','u','g','r'), 246 HB_SCRIPT_TANGSA = HB_TAG ('T','n','s','a'), 247 HB_SCRIPT_TOTO = HB_TAG ('T','o','t','o'), 248 HB_SCRIPT_VITHKUQI = HB_TAG ('V','i','t','h'), 249 HB_SCRIPT_INVALID = HB_TAG_NONE, 250 _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX, 251 _HB_SCRIPT_MAX_VALUE_SIGNED = HB_TAG_MAX_SIGNED 252 } hb_script_t; 253 254 #ifndef HB_DISABLE_DEPRECATED 255 #define HB_SCRIPT_CANADIAN_ABORIGINAL HB_SCRIPT_CANADIAN_SYLLABICS 256 #endif 257 258 typedef struct hb_user_data_key_t { 259 char unused; 260 } hb_user_data_key_t; 261 262 typedef void (*hb_destroy_func_t) (void *user_data); 263 264 #define HB_FEATURE_GLOBAL_START 0 265 #define HB_FEATURE_GLOBAL_END ((unsigned int) -1) 266 267 typedef struct hb_feature_t { 268 hb_tag_t tag; 269 uint32_t value; 270 unsigned int start; 271 unsigned int end; 272 } hb_feature_t; 273 274 typedef struct hb_variation_t { 275 hb_tag_t tag; 276 float value; 277 } hb_variation_t; 278 279 typedef uint32_t hb_color_t; 280 281 #define HB_COLOR(b,g,r,a) ((hb_color_t) HB_TAG ((b),(g),(r),(a))) 282 283 typedef enum { 284 HB_MEMORY_MODE_DUPLICATE, 285 HB_MEMORY_MODE_READONLY, 286 HB_MEMORY_MODE_WRITABLE, 287 HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE 288 } hb_memory_mode_t; 289 290 typedef struct hb_blob_t hb_blob_t; 291 292 #define HB_UNICODE_MAX 0x10FFFFu 293 294 typedef enum 295 { 296 HB_UNICODE_GENERAL_CATEGORY_CONTROL, 297 HB_UNICODE_GENERAL_CATEGORY_FORMAT, 298 HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, 299 HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, 300 HB_UNICODE_GENERAL_CATEGORY_SURROGATE, 301 HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, 302 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, 303 HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, 304 HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, 305 HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, 306 HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK, 307 HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, 308 HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, 309 HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, 310 HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, 311 HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, 312 HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, 313 HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, 314 HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, 315 HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, 316 HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, 317 HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, 318 HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, 319 HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, 320 HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, 321 HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, 322 HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, 323 HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, 324 HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, 325 HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR 326 } hb_unicode_general_category_t; 327 328 typedef enum 329 { 330 HB_UNICODE_COMBINING_CLASS_NOT_REORDERED = 0, 331 HB_UNICODE_COMBINING_CLASS_OVERLAY = 1, 332 HB_UNICODE_COMBINING_CLASS_NUKTA = 7, 333 HB_UNICODE_COMBINING_CLASS_KANA_VOICING = 8, 334 HB_UNICODE_COMBINING_CLASS_VIRAMA = 9, 335 HB_UNICODE_COMBINING_CLASS_CCC10 = 10, 336 HB_UNICODE_COMBINING_CLASS_CCC11 = 11, 337 HB_UNICODE_COMBINING_CLASS_CCC12 = 12, 338 HB_UNICODE_COMBINING_CLASS_CCC13 = 13, 339 HB_UNICODE_COMBINING_CLASS_CCC14 = 14, 340 HB_UNICODE_COMBINING_CLASS_CCC15 = 15, 341 HB_UNICODE_COMBINING_CLASS_CCC16 = 16, 342 HB_UNICODE_COMBINING_CLASS_CCC17 = 17, 343 HB_UNICODE_COMBINING_CLASS_CCC18 = 18, 344 HB_UNICODE_COMBINING_CLASS_CCC19 = 19, 345 HB_UNICODE_COMBINING_CLASS_CCC20 = 20, 346 HB_UNICODE_COMBINING_CLASS_CCC21 = 21, 347 HB_UNICODE_COMBINING_CLASS_CCC22 = 22, 348 HB_UNICODE_COMBINING_CLASS_CCC23 = 23, 349 HB_UNICODE_COMBINING_CLASS_CCC24 = 24, 350 HB_UNICODE_COMBINING_CLASS_CCC25 = 25, 351 HB_UNICODE_COMBINING_CLASS_CCC26 = 26, 352 HB_UNICODE_COMBINING_CLASS_CCC27 = 27, 353 HB_UNICODE_COMBINING_CLASS_CCC28 = 28, 354 HB_UNICODE_COMBINING_CLASS_CCC29 = 29, 355 HB_UNICODE_COMBINING_CLASS_CCC30 = 30, 356 HB_UNICODE_COMBINING_CLASS_CCC31 = 31, 357 HB_UNICODE_COMBINING_CLASS_CCC32 = 32, 358 HB_UNICODE_COMBINING_CLASS_CCC33 = 33, 359 HB_UNICODE_COMBINING_CLASS_CCC34 = 34, 360 HB_UNICODE_COMBINING_CLASS_CCC35 = 35, 361 HB_UNICODE_COMBINING_CLASS_CCC36 = 36, 362 HB_UNICODE_COMBINING_CLASS_CCC84 = 84, 363 HB_UNICODE_COMBINING_CLASS_CCC91 = 91, 364 HB_UNICODE_COMBINING_CLASS_CCC103 = 103, 365 HB_UNICODE_COMBINING_CLASS_CCC107 = 107, 366 HB_UNICODE_COMBINING_CLASS_CCC118 = 118, 367 HB_UNICODE_COMBINING_CLASS_CCC122 = 122, 368 HB_UNICODE_COMBINING_CLASS_CCC129 = 129, 369 HB_UNICODE_COMBINING_CLASS_CCC130 = 130, 370 HB_UNICODE_COMBINING_CLASS_CCC133 = 132, 371 HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT = 200, 372 HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW = 202, 373 HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE = 214, 374 HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT = 216, 375 HB_UNICODE_COMBINING_CLASS_BELOW_LEFT = 218, 376 HB_UNICODE_COMBINING_CLASS_BELOW = 220, 377 HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT = 222, 378 HB_UNICODE_COMBINING_CLASS_LEFT = 224, 379 HB_UNICODE_COMBINING_CLASS_RIGHT = 226, 380 HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT = 228, 381 HB_UNICODE_COMBINING_CLASS_ABOVE = 230, 382 HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT = 232, 383 HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW = 233, 384 HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE = 234, 385 HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT = 240, 386 HB_UNICODE_COMBINING_CLASS_INVALID = 255 387 } hb_unicode_combining_class_t; 388 389 typedef struct hb_unicode_funcs_t hb_unicode_funcs_t; 390 typedef hb_unicode_combining_class_t (*hb_unicode_combining_class_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); 391 #ifndef HB_DISABLE_DEPRECATED 392 typedef unsigned int (*hb_unicode_eastasian_width_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); 393 typedef unsigned int (*hb_unicode_decompose_compatibility_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t u, hb_codepoint_t *decomposed, void *user_data); 394 #endif 395 typedef hb_unicode_general_category_t (*hb_unicode_general_category_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); 396 typedef hb_codepoint_t (*hb_unicode_mirroring_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); 397 typedef hb_script_t (*hb_unicode_script_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); 398 typedef hb_bool_t (*hb_unicode_compose_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab, void *user_data); 399 typedef hb_bool_t (*hb_unicode_decompose_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b, void *user_data); 400 401 #ifndef HB_DISABLE_DEPRECATED 402 #define HB_UNICODE_MAX_DECOMPOSITION_LEN (18+1) 403 #endif 404 405 typedef struct hb_face_t hb_face_t; 406 typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); 407 408 typedef struct hb_font_t hb_font_t; 409 typedef struct hb_font_funcs_t hb_font_funcs_t; 410 411 typedef struct hb_font_extents_t 412 { 413 hb_position_t ascender; 414 hb_position_t descender; 415 hb_position_t line_gap; 416 hb_position_t reserved9; 417 hb_position_t reserved8; 418 hb_position_t reserved7; 419 hb_position_t reserved6; 420 hb_position_t reserved5; 421 hb_position_t reserved4; 422 hb_position_t reserved3; 423 hb_position_t reserved2; 424 hb_position_t reserved1; 425 } hb_font_extents_t; 426 427 typedef struct hb_glyph_extents_t 428 { 429 hb_position_t x_bearing; 430 hb_position_t y_bearing; 431 hb_position_t width; 432 hb_position_t height; 433 } hb_glyph_extents_t; 434 435 typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data, hb_font_extents_t *metrics, void *user_data); 436 typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; 437 typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; 438 439 #ifndef HB_DISABLE_DEPRECATED 440 typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph, void *user_data); 441 #endif 442 typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t *glyph, void *user_data); 443 typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph, void *user_data); 444 typedef unsigned int (*hb_font_get_nominal_glyphs_func_t) (hb_font_t *font, void *font_data, unsigned int count, const hb_codepoint_t *first_unicode, unsigned int unicode_stride, hb_codepoint_t *first_glyph, unsigned int glyph_stride, void *user_data); 445 typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, void *user_data); 446 typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t; 447 typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t; 448 449 typedef void (*hb_font_get_glyph_advances_func_t) (hb_font_t* font, void* font_data, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride, void *user_data); 450 typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t; 451 typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t; 452 453 typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y, void *user_data); 454 typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t; 455 typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t; 456 457 typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, void *user_data); 458 typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t; 459 #ifndef HB_DISABLE_DEPRECATED 460 typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t; 461 #endif 462 463 typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, hb_glyph_extents_t *extents, void *user_data); 464 typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y, void *user_data); 465 466 typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, char *name, unsigned int size, void *user_data); 467 typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data, const char *name, int len, hb_codepoint_t *glyph, void *user_data); 468 469 #define HB_MAP_VALUE_INVALID ((hb_codepoint_t) -1) 470 471 typedef struct hb_map_t hb_map_t; 472 473 #define HB_SET_VALUE_INVALID ((hb_codepoint_t) -1) 474 475 typedef struct hb_set_t hb_set_t; 476 477 typedef struct hb_glyph_info_t { 478 hb_codepoint_t codepoint; 479 hb_mask_t mask; 480 uint32_t cluster; 481 hb_var_int_t var1; 482 hb_var_int_t var2; 483 } hb_glyph_info_t; 484 485 typedef enum { 486 HB_GLYPH_FLAG_UNSAFE_TO_BREAK = 0x00000001, 487 HB_GLYPH_FLAG_UNSAFE_TO_CONCAT = 0x00000002, 488 HB_GLYPH_FLAG_DEFINED = 0x00000001 489 } hb_glyph_flags_t; 490 491 #define hb_glyph_info_get_glyph_flags(info) \ 492 ((hb_glyph_flags_t) ((unsigned int) (info)->mask & HB_GLYPH_FLAG_DEFINED)) 493 494 typedef struct hb_glyph_position_t { 495 hb_position_t x_advance; 496 hb_position_t y_advance; 497 hb_position_t x_offset; 498 hb_position_t y_offset; 499 hb_var_int_t var; 500 } hb_glyph_position_t; 501 502 503 typedef struct hb_segment_properties_t { 504 hb_direction_t direction; 505 hb_script_t script; 506 hb_language_t language; 507 void *reserved1; 508 void *reserved2; 509 } hb_segment_properties_t; 510 511 #define HB_SEGMENT_PROPERTIES_DEFAULT {HB_DIRECTION_INVALID, HB_SCRIPT_INVALID, HB_LANGUAGE_INVALID, (void *) 0, (void *) 0} 512 513 typedef struct hb_buffer_t hb_buffer_t; 514 515 typedef enum { 516 HB_BUFFER_CONTENT_TYPE_INVALID = 0, 517 HB_BUFFER_CONTENT_TYPE_UNICODE, 518 HB_BUFFER_CONTENT_TYPE_GLYPHS 519 } hb_buffer_content_type_t; 520 521 typedef enum { 522 HB_BUFFER_FLAG_DEFAULT = 0x00000000u, 523 HB_BUFFER_FLAG_BOT = 0x00000001u, 524 HB_BUFFER_FLAG_EOT = 0x00000002u, 525 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004u, 526 HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES = 0x00000008u, 527 HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE = 0x00000010u 528 } hb_buffer_flags_t; 529 #ifndef HB_DISABLE_DEPRECATED 530 #define HB_BUFFER_FLAGS_DEFAULT HB_BUFFER_FLAG_DEFAULT 531 #endif 532 533 typedef enum { 534 HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0, 535 HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1, 536 HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2, 537 HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES 538 } hb_buffer_cluster_level_t; 539 540 #define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu 541 542 typedef enum { 543 HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u, 544 HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u, 545 HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u, 546 HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u, 547 HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u, 548 HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS = 0x00000010u, 549 HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES = 0x00000020u 550 } hb_buffer_serialize_flags_t; 551 #ifndef HB_DISABLE_DEPRECATED 552 #define HB_BUFFER_SERIALIZE_FLAGS_DEFAULT HB_BUFFER_SERIALIZE_FLAG_DEFAULT 553 #endif 554 555 typedef enum { 556 HB_BUFFER_SERIALIZE_FORMAT_TEXT = HB_TAG('T','E','X','T'), 557 HB_BUFFER_SERIALIZE_FORMAT_JS = HB_TAG('J','S','O','N'), 558 HB_BUFFER_SERIALIZE_FORMAT_INVALID = HB_TAG_NONE 559 } hb_buffer_serialize_format_t; 560 561 typedef enum { 562 HB_BUFFER_DIFF_FLAG_EQUAL = 0x0000, 563 HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH = 0x0001, 564 HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH = 0x0002, 565 HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT = 0x0004, 566 HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT = 0x0008, 567 HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH = 0x0010, 568 HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH = 0x0020, 569 HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH = 0x0040, 570 HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH = 0x0080 571 } hb_buffer_diff_flags_t; 572 573 typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer, hb_font_t *font, const char *message, void *user_data); 574 575 #define HB_OT_TAG_MATH HB_TAG('M','A','T','H') 576 577 #define HB_OT_MATH_SCRIPT HB_TAG('m','a','t','h') 578 579 typedef enum { 580 HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN = 0, 581 HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN = 1, 582 HB_OT_MATH_CONSTANT_DELIMITED_SUB_FORMULA_MIN_HEIGHT = 2, 583 HB_OT_MATH_CONSTANT_DISPLAY_OPERATOR_MIN_HEIGHT = 3, 584 HB_OT_MATH_CONSTANT_MATH_LEADING = 4, 585 HB_OT_MATH_CONSTANT_AXIS_HEIGHT = 5, 586 HB_OT_MATH_CONSTANT_ACCENT_BASE_HEIGHT = 6, 587 HB_OT_MATH_CONSTANT_FLATTENED_ACCENT_BASE_HEIGHT = 7, 588 HB_OT_MATH_CONSTANT_SUBSCRIPT_SHIFT_DOWN = 8, 589 HB_OT_MATH_CONSTANT_SUBSCRIPT_TOP_MAX = 9, 590 HB_OT_MATH_CONSTANT_SUBSCRIPT_BASELINE_DROP_MIN = 10, 591 HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP = 11, 592 HB_OT_MATH_CONSTANT_SUPERSCRIPT_SHIFT_UP_CRAMPED = 12, 593 HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MIN = 13, 594 HB_OT_MATH_CONSTANT_SUPERSCRIPT_BASELINE_DROP_MAX = 14, 595 HB_OT_MATH_CONSTANT_SUB_SUPERSCRIPT_GAP_MIN = 15, 596 HB_OT_MATH_CONSTANT_SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT = 16, 597 HB_OT_MATH_CONSTANT_SPACE_AFTER_SCRIPT = 17, 598 HB_OT_MATH_CONSTANT_UPPER_LIMIT_GAP_MIN = 18, 599 HB_OT_MATH_CONSTANT_UPPER_LIMIT_BASELINE_RISE_MIN = 19, 600 HB_OT_MATH_CONSTANT_LOWER_LIMIT_GAP_MIN = 20, 601 HB_OT_MATH_CONSTANT_LOWER_LIMIT_BASELINE_DROP_MIN = 21, 602 HB_OT_MATH_CONSTANT_STACK_TOP_SHIFT_UP = 22, 603 HB_OT_MATH_CONSTANT_STACK_TOP_DISPLAY_STYLE_SHIFT_UP = 23, 604 HB_OT_MATH_CONSTANT_STACK_BOTTOM_SHIFT_DOWN = 24, 605 HB_OT_MATH_CONSTANT_STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN = 25, 606 HB_OT_MATH_CONSTANT_STACK_GAP_MIN = 26, 607 HB_OT_MATH_CONSTANT_STACK_DISPLAY_STYLE_GAP_MIN = 27, 608 HB_OT_MATH_CONSTANT_STRETCH_STACK_TOP_SHIFT_UP = 28, 609 HB_OT_MATH_CONSTANT_STRETCH_STACK_BOTTOM_SHIFT_DOWN = 29, 610 HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_ABOVE_MIN = 30, 611 HB_OT_MATH_CONSTANT_STRETCH_STACK_GAP_BELOW_MIN = 31, 612 HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_SHIFT_UP = 32, 613 HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP = 33, 614 HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_SHIFT_DOWN = 34, 615 HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN = 35, 616 HB_OT_MATH_CONSTANT_FRACTION_NUMERATOR_GAP_MIN = 36, 617 HB_OT_MATH_CONSTANT_FRACTION_NUM_DISPLAY_STYLE_GAP_MIN = 37, 618 HB_OT_MATH_CONSTANT_FRACTION_RULE_THICKNESS = 38, 619 HB_OT_MATH_CONSTANT_FRACTION_DENOMINATOR_GAP_MIN = 39, 620 HB_OT_MATH_CONSTANT_FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN = 40, 621 HB_OT_MATH_CONSTANT_SKEWED_FRACTION_HORIZONTAL_GAP = 41, 622 HB_OT_MATH_CONSTANT_SKEWED_FRACTION_VERTICAL_GAP = 42, 623 HB_OT_MATH_CONSTANT_OVERBAR_VERTICAL_GAP = 43, 624 HB_OT_MATH_CONSTANT_OVERBAR_RULE_THICKNESS = 44, 625 HB_OT_MATH_CONSTANT_OVERBAR_EXTRA_ASCENDER = 45, 626 HB_OT_MATH_CONSTANT_UNDERBAR_VERTICAL_GAP = 46, 627 HB_OT_MATH_CONSTANT_UNDERBAR_RULE_THICKNESS = 47, 628 HB_OT_MATH_CONSTANT_UNDERBAR_EXTRA_DESCENDER = 48, 629 HB_OT_MATH_CONSTANT_RADICAL_VERTICAL_GAP = 49, 630 HB_OT_MATH_CONSTANT_RADICAL_DISPLAY_STYLE_VERTICAL_GAP = 50, 631 HB_OT_MATH_CONSTANT_RADICAL_RULE_THICKNESS = 51, 632 HB_OT_MATH_CONSTANT_RADICAL_EXTRA_ASCENDER = 52, 633 HB_OT_MATH_CONSTANT_RADICAL_KERN_BEFORE_DEGREE = 53, 634 HB_OT_MATH_CONSTANT_RADICAL_KERN_AFTER_DEGREE = 54, 635 HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT = 55 636 } hb_ot_math_constant_t; 637 638 typedef enum { 639 HB_OT_MATH_KERN_TOP_RIGHT = 0, 640 HB_OT_MATH_KERN_TOP_LEFT = 1, 641 HB_OT_MATH_KERN_BOTTOM_RIGHT = 2, 642 HB_OT_MATH_KERN_BOTTOM_LEFT = 3 643 } hb_ot_math_kern_t; 644 645 typedef struct hb_ot_math_glyph_variant_t { 646 hb_codepoint_t glyph; 647 hb_position_t advance; 648 } hb_ot_math_glyph_variant_t; 649 650 typedef enum { 651 HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER = 0x00000001u 652 } hb_ot_math_glyph_part_flags_t; 653 #ifndef HB_DISABLE_DEPRECATED 654 #define HB_MATH_GLYPH_PART_FLAG_EXTENDER HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER 655 #endif 656 657 typedef struct hb_ot_math_glyph_part_t { 658 hb_codepoint_t glyph; 659 hb_position_t start_connector_length; 660 hb_position_t end_connector_length; 661 hb_position_t full_advance; 662 hb_ot_math_glyph_part_flags_t flags; 663 } hb_ot_math_glyph_part_t; 664 665 typedef enum { 666 HB_OT_META_TAG_DESIGN_LANGUAGES = HB_TAG ('d','l','n','g'), 667 HB_OT_META_TAG_SUPPORTED_LANGUAGES = HB_TAG ('s','l','n','g'), 668 _HB_OT_META_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED 669 } hb_ot_meta_tag_t; 670 671 typedef enum { 672 HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER = HB_TAG ('h','a','s','c'), 673 HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER = HB_TAG ('h','d','s','c'), 674 HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP = HB_TAG ('h','l','g','p'), 675 HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT = HB_TAG ('h','c','l','a'), 676 HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT = HB_TAG ('h','c','l','d'), 677 HB_OT_METRICS_TAG_VERTICAL_ASCENDER = HB_TAG ('v','a','s','c'), 678 HB_OT_METRICS_TAG_VERTICAL_DESCENDER = HB_TAG ('v','d','s','c'), 679 HB_OT_METRICS_TAG_VERTICAL_LINE_GAP = HB_TAG ('v','l','g','p'), 680 HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE = HB_TAG ('h','c','r','s'), 681 HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN = HB_TAG ('h','c','r','n'), 682 HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET = HB_TAG ('h','c','o','f'), 683 HB_OT_METRICS_TAG_VERTICAL_CARET_RISE = HB_TAG ('v','c','r','s'), 684 HB_OT_METRICS_TAG_VERTICAL_CARET_RUN = HB_TAG ('v','c','r','n'), 685 HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET = HB_TAG ('v','c','o','f'), 686 HB_OT_METRICS_TAG_X_HEIGHT = HB_TAG ('x','h','g','t'), 687 HB_OT_METRICS_TAG_CAP_HEIGHT = HB_TAG ('c','p','h','t'), 688 HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE = HB_TAG ('s','b','x','s'), 689 HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE = HB_TAG ('s','b','y','s'), 690 HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET = HB_TAG ('s','b','x','o'), 691 HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET = HB_TAG ('s','b','y','o'), 692 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE = HB_TAG ('s','p','x','s'), 693 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE = HB_TAG ('s','p','y','s'), 694 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET = HB_TAG ('s','p','x','o'), 695 HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET = HB_TAG ('s','p','y','o'), 696 HB_OT_METRICS_TAG_STRIKEOUT_SIZE = HB_TAG ('s','t','r','s'), 697 HB_OT_METRICS_TAG_STRIKEOUT_OFFSET = HB_TAG ('s','t','r','o'), 698 HB_OT_METRICS_TAG_UNDERLINE_SIZE = HB_TAG ('u','n','d','s'), 699 HB_OT_METRICS_TAG_UNDERLINE_OFFSET = HB_TAG ('u','n','d','o'), 700 _HB_OT_METRICS_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED 701 } hb_ot_metrics_tag_t; 702 703 typedef struct hb_shape_plan_t hb_shape_plan_t; 704 705 #define HB_OT_TAG_BASE HB_TAG('B','A','S','E') 706 #define HB_OT_TAG_GDEF HB_TAG('G','D','E','F') 707 #define HB_OT_TAG_GSUB HB_TAG('G','S','U','B') 708 #define HB_OT_TAG_GPOS HB_TAG('G','P','O','S') 709 #define HB_OT_TAG_JSTF HB_TAG('J','S','T','F') 710 711 #define HB_OT_TAG_DEFAULT_SCRIPT HB_TAG ('D', 'F', 'L', 'T') 712 #define HB_OT_TAG_DEFAULT_LANGUAGE HB_TAG ('d', 'f', 'l', 't') 713 714 #define HB_OT_MAX_TAGS_PER_SCRIPT 3u 715 #define HB_OT_MAX_TAGS_PER_LANGUAGE 3u 716 717 typedef enum { 718 HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0, 719 HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH = 1, 720 HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE = 2, 721 HB_OT_LAYOUT_GLYPH_CLASS_MARK = 3, 722 HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT = 4 723 } hb_ot_layout_glyph_class_t; 724 725 #define HB_OT_LAYOUT_NO_SCRIPT_INDEX 0xFFFFu 726 #define HB_OT_LAYOUT_NO_FEATURE_INDEX 0xFFFFu 727 #define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu 728 #define HB_OT_LAYOUT_NO_VARIATIONS_INDEX 0xFFFFFFFFu 729 730 typedef enum { 731 HB_OT_LAYOUT_BASELINE_TAG_ROMAN = HB_TAG ('r','o','m','n'), 732 HB_OT_LAYOUT_BASELINE_TAG_HANGING = HB_TAG ('h','a','n','g'), 733 HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT = HB_TAG ('i','c','f','b'), 734 HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT = HB_TAG ('i','c','f','t'), 735 HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT = HB_TAG ('i','d','e','o'), 736 HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT = HB_TAG ('i','d','t','p'), 737 HB_OT_LAYOUT_BASELINE_TAG_MATH = HB_TAG ('m','a','t','h'), 738 _HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED 739 } hb_ot_layout_baseline_tag_t; 740 741 enum 742 { 743 HB_OT_NAME_ID_COPYRIGHT = 0, 744 HB_OT_NAME_ID_FONT_FAMILY = 1, 745 HB_OT_NAME_ID_FONT_SUBFAMILY = 2, 746 HB_OT_NAME_ID_UNIQUE_ID = 3, 747 HB_OT_NAME_ID_FULL_NAME = 4, 748 HB_OT_NAME_ID_VERSION_STRING = 5, 749 HB_OT_NAME_ID_POSTSCRIPT_NAME = 6, 750 HB_OT_NAME_ID_TRADEMARK = 7, 751 HB_OT_NAME_ID_MANUFACTURER = 8, 752 HB_OT_NAME_ID_DESIGNER = 9, 753 HB_OT_NAME_ID_DESCRIPTION = 10, 754 HB_OT_NAME_ID_VENDOR_URL = 11, 755 HB_OT_NAME_ID_DESIGNER_URL = 12, 756 HB_OT_NAME_ID_LICENSE = 13, 757 HB_OT_NAME_ID_LICENSE_URL = 14, 758 /*HB_OT_NAME_ID_RESERVED = 15,*/ 759 HB_OT_NAME_ID_TYPOGRAPHIC_FAMILY = 16, 760 HB_OT_NAME_ID_TYPOGRAPHIC_SUBFAMILY = 17, 761 HB_OT_NAME_ID_MAC_FULL_NAME = 18, 762 HB_OT_NAME_ID_SAMPLE_TEXT = 19, 763 HB_OT_NAME_ID_CID_FINDFONT_NAME = 20, 764 HB_OT_NAME_ID_WWS_FAMILY = 21, 765 HB_OT_NAME_ID_WWS_SUBFAMILY = 22, 766 HB_OT_NAME_ID_LIGHT_BACKGROUND = 23, 767 HB_OT_NAME_ID_DARK_BACKGROUND = 24, 768 HB_OT_NAME_ID_VARIATIONS_PS_PREFIX = 25, 769 HB_OT_NAME_ID_INVALID = 0xFFFF 770 }; 771 772 typedef unsigned int hb_ot_name_id_t; 773 774 typedef struct hb_ot_name_entry_t 775 { 776 hb_ot_name_id_t name_id; 777 hb_var_int_t var; 778 hb_language_t language; 779 } hb_ot_name_entry_t; 780 781 #define HB_OT_TAG_VAR_AXIS_ITALIC HB_TAG('i','t','a','l') 782 #define HB_OT_TAG_VAR_AXIS_OPTICAL_SIZE HB_TAG('o','p','s','z') 783 #define HB_OT_TAG_VAR_AXIS_SLANT HB_TAG('s','l','n','t') 784 #define HB_OT_TAG_VAR_AXIS_WIDTH HB_TAG('w','d','t','h') 785 #define HB_OT_TAG_VAR_AXIS_WEIGHT HB_TAG('w','g','h','t') 786 787 typedef enum { 788 HB_OT_VAR_AXIS_FLAG_HIDDEN = 0x00000001u, 789 _HB_OT_VAR_AXIS_FLAG_MAX_VALUE= 0x7FFFFFFFu 790 } hb_ot_var_axis_flags_t; 791 792 typedef struct hb_ot_var_axis_info_t 793 { 794 unsigned int axis_index; 795 hb_tag_t tag; 796 hb_ot_name_id_t name_id; 797 hb_ot_var_axis_flags_t flags; 798 float min_value; 799 float default_value; 800 float max_value; 801 unsigned int reserved; 802 } hb_ot_var_axis_info_t; 803 804 #ifndef HB_DISABLE_DEPRECATED 805 typedef struct hb_ot_var_axis_t { 806 hb_tag_t tag; 807 unsigned int name_id; 808 float min_value; 809 float default_value; 810 float max_value; 811 } hb_ot_var_axis_t; 812 813 #define HB_OT_VAR_NO_AXIS_INDEX 0xFFFFFFFFu 814 #endif 815 816 typedef enum { 817 HB_OT_COLOR_PALETTE_FLAG_DEFAULT = 0x00000000u, 818 HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_LIGHT_BACKGROUND = 0x00000001u, 819 HB_OT_COLOR_PALETTE_FLAG_USABLE_WITH_DARK_BACKGROUND = 0x00000002u 820 } hb_ot_color_palette_flags_t; 821 822 typedef struct hb_ot_color_layer_t 823 { 824 hb_codepoint_t glyph; 825 unsigned int color_index; 826 } hb_ot_color_layer_t; 827 828 typedef enum 829 { 830 HB_AAT_LAYOUT_FEATURE_TYPE_INVALID = 0xFFFF, 831 HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC = 0, 832 HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES = 1, 833 HB_AAT_LAYOUT_FEATURE_TYPE_CURISVE_CONNECTION = 2, 834 HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE = 3, 835 HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION = 4, 836 HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT = 5, 837 HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING = 6, 838 HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE = 8, 839 HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE = 9, 840 HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION = 10, 841 HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS = 11, 842 HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE = 13, 843 HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS = 14, 844 HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS = 15, 845 HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE = 16, 846 HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES = 17, 847 HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE = 18, 848 HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS = 19, 849 HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE = 20, 850 HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE = 21, 851 HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING = 22, 852 HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION = 23, 853 HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE = 24, 854 HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE = 25, 855 HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE = 26, 856 HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE = 27, 857 HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA = 28, 858 HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE = 29, 859 HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE = 30, 860 HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE = 31, 861 HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN = 32, 862 HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT = 33, 863 HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA = 34, 864 HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES = 35, 865 HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES = 36, 866 HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE = 37, 867 HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE = 38, 868 HB_AAT_LAYOUT_FEATURE_TYPE_LANGUAGE_TAG_TYPE = 39, 869 HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE = 103, 870 871 _HB_AAT_LAYOUT_FEATURE_TYPE_MAX_VALUE= 0x7FFFFFFFu, 872 } hb_aat_layout_feature_type_t; 873 874 typedef enum 875 { 876 HB_AAT_LAYOUT_FEATURE_SELECTOR_INVALID = 0xFFFF, 877 878 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_ON = 0, 879 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_TYPE_FEATURES_OFF = 1, 880 881 HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_ON = 0, 882 HB_AAT_LAYOUT_FEATURE_SELECTOR_REQUIRED_LIGATURES_OFF = 1, 883 HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON = 2, 884 HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF = 3, 885 HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON = 4, 886 HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF = 5, 887 HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_ON = 6, 888 HB_AAT_LAYOUT_FEATURE_SELECTOR_LOGOS_OFF = 7, 889 HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_ON = 8, 890 HB_AAT_LAYOUT_FEATURE_SELECTOR_REBUS_PICTURES_OFF = 9, 891 HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_ON = 10, 892 HB_AAT_LAYOUT_FEATURE_SELECTOR_DIPHTHONG_LIGATURES_OFF = 11, 893 HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_ON = 12, 894 HB_AAT_LAYOUT_FEATURE_SELECTOR_SQUARED_LIGATURES_OFF = 13, 895 HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_ON = 14, 896 HB_AAT_LAYOUT_FEATURE_SELECTOR_ABBREV_SQUARED_LIGATURES_OFF = 15, 897 HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_ON = 16, 898 HB_AAT_LAYOUT_FEATURE_SELECTOR_SYMBOL_LIGATURES_OFF = 17, 899 HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON = 18, 900 HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF = 19, 901 HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON = 20, 902 HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF = 21, 903 904 HB_AAT_LAYOUT_FEATURE_SELECTOR_UNCONNECTED = 0, 905 HB_AAT_LAYOUT_FEATURE_SELECTOR_PARTIALLY_CONNECTED = 1, 906 HB_AAT_LAYOUT_FEATURE_SELECTOR_CURSIVE = 2, 907 908 HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_AND_LOWER_CASE = 0, 909 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_CAPS = 1, 910 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALL_LOWER_CASE = 2, 911 HB_AAT_LAYOUT_FEATURE_SELECTOR_SMALL_CAPS = 3, 912 HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS = 4, 913 HB_AAT_LAYOUT_FEATURE_SELECTOR_INITIAL_CAPS_AND_SMALL_CAPS = 5, 914 915 HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON = 0, 916 HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF = 1, 917 918 HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_ON = 0, 919 HB_AAT_LAYOUT_FEATURE_SELECTOR_LINGUISTIC_REARRANGEMENT_OFF = 1, 920 921 HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS = 0, 922 HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS = 1, 923 HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_NUMBERS = 2, 924 HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_NUMBERS = 3, 925 926 HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_ON = 0, 927 HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_INITIAL_SWASHES_OFF = 1, 928 HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_ON = 2, 929 HB_AAT_LAYOUT_FEATURE_SELECTOR_WORD_FINAL_SWASHES_OFF = 3, 930 HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_ON = 4, 931 HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_INITIAL_SWASHES_OFF = 5, 932 HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_ON = 6, 933 HB_AAT_LAYOUT_FEATURE_SELECTOR_LINE_FINAL_SWASHES_OFF = 7, 934 HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_ON = 8, 935 HB_AAT_LAYOUT_FEATURE_SELECTOR_NON_FINAL_SWASHES_OFF = 9, 936 937 HB_AAT_LAYOUT_FEATURE_SELECTOR_SHOW_DIACRITICS = 0, 938 HB_AAT_LAYOUT_FEATURE_SELECTOR_HIDE_DIACRITICS = 1, 939 HB_AAT_LAYOUT_FEATURE_SELECTOR_DECOMPOSE_DIACRITICS = 2, 940 941 HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION = 0, 942 HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS = 1, 943 HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS = 2, 944 HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS = 3, 945 HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS = 4, 946 947 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS = 0, 948 HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS = 1, 949 HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS = 2, 950 951 HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_ON = 0, 952 HB_AAT_LAYOUT_FEATURE_SELECTOR_PREVENT_OVERLAP_OFF = 1, 953 954 HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_ON = 0, 955 HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHENS_TO_EM_DASH_OFF = 1, 956 HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_ON = 2, 957 HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_EN_DASH_OFF = 3, 958 HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON = 4, 959 HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF = 5, 960 HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_ON = 6, 961 HB_AAT_LAYOUT_FEATURE_SELECTOR_FORM_INTERROBANG_OFF = 7, 962 HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_ON = 8, 963 HB_AAT_LAYOUT_FEATURE_SELECTOR_SMART_QUOTES_OFF = 9, 964 HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_ON = 10, 965 HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIODS_TO_ELLIPSIS_OFF = 11, 966 967 HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_ON = 0, 968 HB_AAT_LAYOUT_FEATURE_SELECTOR_HYPHEN_TO_MINUS_OFF = 1, 969 HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_ON = 2, 970 HB_AAT_LAYOUT_FEATURE_SELECTOR_ASTERISK_TO_MULTIPLY_OFF = 3, 971 HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_ON = 4, 972 HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASH_TO_DIVIDE_OFF = 5, 973 HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_ON = 6, 974 HB_AAT_LAYOUT_FEATURE_SELECTOR_INEQUALITY_LIGATURES_OFF = 7, 975 HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_ON = 8, 976 HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPONENTS_OFF = 9, 977 HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON = 10, 978 HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF = 11, 979 980 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ORNAMENTS = 0, 981 HB_AAT_LAYOUT_FEATURE_SELECTOR_DINGBATS = 1, 982 HB_AAT_LAYOUT_FEATURE_SELECTOR_PI_CHARACTERS = 2, 983 HB_AAT_LAYOUT_FEATURE_SELECTOR_FLEURONS = 3, 984 HB_AAT_LAYOUT_FEATURE_SELECTOR_DECORATIVE_BORDERS = 4, 985 HB_AAT_LAYOUT_FEATURE_SELECTOR_INTERNATIONAL_SYMBOLS = 5, 986 HB_AAT_LAYOUT_FEATURE_SELECTOR_MATH_SYMBOLS = 6, 987 988 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ALTERNATES = 0, 989 990 HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL1 = 0, 991 HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL2 = 1, 992 HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL3 = 2, 993 HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL4 = 3, 994 HB_AAT_LAYOUT_FEATURE_SELECTOR_DESIGN_LEVEL5 = 4, 995 996 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS = 0, 997 HB_AAT_LAYOUT_FEATURE_SELECTOR_DISPLAY_TEXT = 1, 998 HB_AAT_LAYOUT_FEATURE_SELECTOR_ENGRAVED_TEXT = 2, 999 HB_AAT_LAYOUT_FEATURE_SELECTOR_ILLUMINATED_CAPS = 3, 1000 HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS = 4, 1001 HB_AAT_LAYOUT_FEATURE_SELECTOR_TALL_CAPS = 5, 1002 1003 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS = 0, 1004 HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS = 1, 1005 HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS = 2, 1006 HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS = 3, 1007 HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS = 4, 1008 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_ONE = 5, 1009 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_TWO = 6, 1010 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_THREE = 7, 1011 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FOUR = 8, 1012 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_ALT_FIVE = 9, 1013 HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS = 10, 1014 HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS = 11, 1015 HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS = 12, 1016 HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS = 13, 1017 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS = 14, 1018 1019 HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS = 0, 1020 HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS = 1, 1021 1022 HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT = 0, 1023 HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT = 1, 1024 HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT = 2, 1025 HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT = 3, 1026 HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT = 4, 1027 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT = 5, 1028 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT = 6, 1029 1030 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION = 0, 1031 HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL = 1, 1032 HB_AAT_LAYOUT_FEATURE_SELECTOR_HIRAGANA_TO_KATAKANA = 2, 1033 HB_AAT_LAYOUT_FEATURE_SELECTOR_KATAKANA_TO_HIRAGANA = 3, 1034 HB_AAT_LAYOUT_FEATURE_SELECTOR_KANA_TO_ROMANIZATION = 4, 1035 HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_HIRAGANA = 5, 1036 HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMANIZATION_TO_KATAKANA = 6, 1037 HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_ONE = 7, 1038 HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_TWO = 8, 1039 HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL_ALT_THREE = 9, 1040 1041 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_ANNOTATION = 0, 1042 HB_AAT_LAYOUT_FEATURE_SELECTOR_BOX_ANNOTATION = 1, 1043 HB_AAT_LAYOUT_FEATURE_SELECTOR_ROUNDED_BOX_ANNOTATION = 2, 1044 HB_AAT_LAYOUT_FEATURE_SELECTOR_CIRCLE_ANNOTATION = 3, 1045 HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_CIRCLE_ANNOTATION = 4, 1046 HB_AAT_LAYOUT_FEATURE_SELECTOR_PARENTHESIS_ANNOTATION = 5, 1047 HB_AAT_LAYOUT_FEATURE_SELECTOR_PERIOD_ANNOTATION = 6, 1048 HB_AAT_LAYOUT_FEATURE_SELECTOR_ROMAN_NUMERAL_ANNOTATION = 7, 1049 HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAMOND_ANNOTATION = 8, 1050 HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_BOX_ANNOTATION = 9, 1051 HB_AAT_LAYOUT_FEATURE_SELECTOR_INVERTED_ROUNDED_BOX_ANNOTATION= 10, 1052 1053 HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_KANA = 0, 1054 HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_KANA = 1, 1055 1056 HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_IDEOGRAPHS = 0, 1057 HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_IDEOGRAPHS = 1, 1058 HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_IDEOGRAPHS = 2, 1059 1060 HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_ON = 0, 1061 HB_AAT_LAYOUT_FEATURE_SELECTOR_CANONICAL_COMPOSITION_OFF = 1, 1062 HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_ON = 2, 1063 HB_AAT_LAYOUT_FEATURE_SELECTOR_COMPATIBILITY_COMPOSITION_OFF = 3, 1064 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_ON = 4, 1065 HB_AAT_LAYOUT_FEATURE_SELECTOR_TRANSCODING_COMPOSITION_OFF = 5, 1066 1067 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_RUBY_KANA = 0, 1068 HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA = 1, 1069 HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON = 2, 1070 HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF = 3, 1071 1072 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_SYMBOL_ALTERNATIVES = 0, 1073 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_ONE = 1, 1074 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_TWO = 2, 1075 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_THREE = 3, 1076 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FOUR = 4, 1077 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_SYMBOL_ALT_FIVE = 5, 1078 1079 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_IDEOGRAPHIC_ALTERNATIVES = 0, 1080 HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_ONE = 1, 1081 HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_TWO = 2, 1082 HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_THREE = 3, 1083 HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FOUR = 4, 1084 HB_AAT_LAYOUT_FEATURE_SELECTOR_IDEOGRAPHIC_ALT_FIVE = 5, 1085 1086 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_CENTERED = 0, 1087 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_VERTICAL_ROMAN_HBASELINE = 1, 1088 1089 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_CJK_ITALIC_ROMAN = 0, 1090 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN = 1, 1091 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON = 2, 1092 HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF = 3, 1093 1094 HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON = 0, 1095 HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF = 1, 1096 HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON = 2, 1097 HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF = 3, 1098 1099 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON = 0, 1100 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF = 1, 1101 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON = 2, 1102 HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF = 3, 1103 1104 HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLISTIC_ALTERNATES = 0, 1105 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON = 2, 1106 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF = 3, 1107 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON = 4, 1108 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF = 5, 1109 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON = 6, 1110 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF = 7, 1111 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON = 8, 1112 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF = 9, 1113 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON = 10, 1114 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF = 11, 1115 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON = 12, 1116 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF = 13, 1117 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON = 14, 1118 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF = 15, 1119 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON = 16, 1120 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF = 17, 1121 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON = 18, 1122 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF = 19, 1123 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON = 20, 1124 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF = 21, 1125 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON = 22, 1126 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF = 23, 1127 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON = 24, 1128 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF = 25, 1129 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON = 26, 1130 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF = 27, 1131 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON = 28, 1132 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF = 29, 1133 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON = 30, 1134 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF = 31, 1135 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON = 32, 1136 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF = 33, 1137 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON = 34, 1138 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF = 35, 1139 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON = 36, 1140 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF = 37, 1141 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON = 38, 1142 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF = 39, 1143 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON = 40, 1144 HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF = 41, 1145 1146 HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON = 0, 1147 HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF = 1, 1148 HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON = 2, 1149 HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF = 3, 1150 HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON = 4, 1151 HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF= 5, 1152 1153 HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE = 0, 1154 HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS = 1, 1155 HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS = 2, 1156 1157 HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE = 0, 1158 HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS = 1, 1159 HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS = 2, 1160 1161 HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_CJK_ROMAN = 0, 1162 HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_CJK_ROMAN = 1, 1163 HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_CJK_ROMAN = 2, 1164 HB_AAT_LAYOUT_FEATURE_SELECTOR_FULL_WIDTH_CJK_ROMAN = 3, 1165 1166 _HB_AAT_LAYOUT_FEATURE_SELECTOR_MAX_VALUE= 0x7FFFFFFFu, 1167 } hb_aat_layout_feature_selector_t; 1168 1169 typedef struct hb_aat_layout_feature_selector_info_t 1170 { 1171 hb_ot_name_id_t name_id; 1172 hb_aat_layout_feature_selector_t enable; 1173 hb_aat_layout_feature_selector_t disable; 1174 unsigned int reserved; 1175 } hb_aat_layout_feature_selector_info_t; 1176 1177 #define HB_AAT_LAYOUT_NO_SELECTOR_INDEX 0xFFFFu 1178 1179 typedef enum 1180 { 1181 HB_STYLE_TAG_ITALIC = HB_TAG ('i','t','a','l'), 1182 HB_STYLE_TAG_OPTICAL_SIZE = HB_TAG ('o','p','s','z'), 1183 HB_STYLE_TAG_SLANT_ANGLE = HB_TAG ('s','l','n','t'), 1184 HB_STYLE_TAG_SLANT_RATIO = HB_TAG ('S','l','n','t'), 1185 HB_STYLE_TAG_WIDTH = HB_TAG ('w','d','t','h'), 1186 HB_STYLE_TAG_WEIGHT = HB_TAG ('w','g','h','t'), 1187 1188 _HB_STYLE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED 1189 } hb_style_tag_t; 1190 1191 typedef struct hb_subset_input_t hb_subset_input_t; 1192 1193 typedef enum { 1194 HB_SUBSET_FLAGS_DEFAULT = 0x00000000u, 1195 HB_SUBSET_FLAGS_NO_HINTING = 0x00000001u, 1196 HB_SUBSET_FLAGS_RETAIN_GIDS = 0x00000002u, 1197 HB_SUBSET_FLAGS_DESUBROUTINIZE = 0x00000004u, 1198 HB_SUBSET_FLAGS_NAME_LEGACY = 0x00000008u, 1199 HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG = 0x00000010u, 1200 HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED = 0x00000020u, 1201 HB_SUBSET_FLAGS_NOTDEF_OUTLINE = 0x00000040u, 1202 HB_SUBSET_FLAGS_GLYPH_NAMES = 0x00000080u, 1203 HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES = 0x00000100u, 1204 } hb_subset_flags_t; 1205 1206 typedef enum { 1207 HB_SUBSET_SETS_GLYPH_INDEX = 0, 1208 HB_SUBSET_SETS_UNICODE, 1209 HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG, 1210 HB_SUBSET_SETS_DROP_TABLE_TAG, 1211 HB_SUBSET_SETS_NAME_ID, 1212 HB_SUBSET_SETS_NAME_LANG_ID, 1213 HB_SUBSET_SETS_LAYOUT_FEATURE_TAG, 1214 } hb_subset_sets_t; 1215 1216 #ifdef __cplusplus 1217 } 1218 #endif 1219 1220 #endif /* LIBRARIES_HARFBUZZ_H */