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 */