w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

hb-common.h File Reference
#include <stdint.h>
Include dependency graph for hb-common.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

union  _hb_var_int_t
 
struct  hb_user_data_key_t
 
struct  hb_feature_t
 
struct  hb_variation_t
 

Macros

#define HB_EXTERN   extern
 
#define HB_BEGIN_DECLS
 
#define HB_END_DECLS
 
#define HB_DEPRECATED
 
#define HB_DEPRECATED_FOR(f)   HB_DEPRECATED
 
#define HB_TAG(c1, c2, c3, c4)   ((hb_tag_t)((((uint32_t)(c1)&0xFF)<<24)|(((uint32_t)(c2)&0xFF)<<16)|(((uint32_t)(c3)&0xFF)<<8)|((uint32_t)(c4)&0xFF)))
 
#define HB_UNTAG(tag)   (uint8_t)(((tag)>>24)&0xFF), (uint8_t)(((tag)>>16)&0xFF), (uint8_t)(((tag)>>8)&0xFF), (uint8_t)((tag)&0xFF)
 
#define HB_TAG_NONE   HB_TAG(0,0,0,0)
 
#define HB_TAG_MAX   HB_TAG(0xff,0xff,0xff,0xff)
 
#define HB_TAG_MAX_SIGNED   HB_TAG(0x7f,0xff,0xff,0xff)
 
#define HB_DIRECTION_IS_VALID(dir)   ((((unsigned int) (dir)) & ~3U) == 4)
 
#define HB_DIRECTION_IS_HORIZONTAL(dir)   ((((unsigned int) (dir)) & ~1U) == 4)
 
#define HB_DIRECTION_IS_VERTICAL(dir)   ((((unsigned int) (dir)) & ~1U) == 6)
 
#define HB_DIRECTION_IS_FORWARD(dir)   ((((unsigned int) (dir)) & ~2U) == 4)
 
#define HB_DIRECTION_IS_BACKWARD(dir)   ((((unsigned int) (dir)) & ~2U) == 5)
 
#define HB_DIRECTION_REVERSE(dir)   ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
 
#define HB_LANGUAGE_INVALID   ((hb_language_t) 0)
 
#define HB_FEATURE_GLOBAL_START   0
 
#define HB_FEATURE_GLOBAL_END   ((unsigned int) -1)
 
#define HB_COLOR(b, g, r, a)   ((hb_color_t) HB_TAG ((b),(g),(r),(a)))
 
#define hb_color_get_alpha(color)   ((color) & 0xFF)
 
#define hb_color_get_red(color)   (((color) >> 8) & 0xFF)
 
#define hb_color_get_green(color)   (((color) >> 16) & 0xFF)
 
#define hb_color_get_blue(color)   (((color) >> 24) & 0xFF)
 

Typedefs

typedef int hb_bool_t
 
typedef uint32_t hb_codepoint_t
 
typedef int32_t hb_position_t
 
typedef uint32_t hb_mask_t
 
typedef union _hb_var_int_t hb_var_int_t
 
typedef uint32_t hb_tag_t
 
typedef const struct hb_language_impl_thb_language_t
 
typedef struct hb_user_data_key_t hb_user_data_key_t
 
typedef void(* hb_destroy_func_t) (void *user_data)
 
typedef struct hb_feature_t hb_feature_t
 
typedef struct hb_variation_t hb_variation_t
 
typedef uint32_t hb_color_t
 

Enumerations

enum  hb_direction_t {
  HB_DIRECTION_INVALID = 0 , HB_DIRECTION_LTR = 4 , HB_DIRECTION_RTL , HB_DIRECTION_TTB ,
  HB_DIRECTION_BTT , HB_DIRECTION_INVALID = 0 , HB_DIRECTION_LTR = 4 , HB_DIRECTION_RTL ,
  HB_DIRECTION_TTB , HB_DIRECTION_BTT
}
 
enum  hb_script_t {
  HB_SCRIPT_COMMON = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'y' )&0xFF))) , HB_SCRIPT_INHERITED = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_UNKNOWN = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'z' )&0xFF)<<16)|(((uint32_t)( 'z' )&0xFF)<<8)|((uint32_t)( 'z' )&0xFF))) , HB_SCRIPT_ARABIC = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) ,
  HB_SCRIPT_ARMENIAN = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'n' )&0xFF))) , HB_SCRIPT_BENGALI = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_CYRILLIC = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_DEVANAGARI = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'v' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) ,
  HB_SCRIPT_GEORGIAN = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_GREEK = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_GUJARATI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'j' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_GURMUKHI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_HANGUL = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_HAN = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_HEBREW = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'b' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_HIRAGANA = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) ,
  HB_SCRIPT_KANNADA = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'n' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_KATAKANA = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_LAO = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_LATIN = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'n' )&0xFF))) ,
  HB_SCRIPT_MALAYALAM = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_ORIYA = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_TAMIL = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_TELUGU = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_THAI = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_TIBETAN = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'b' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_BOPOMOFO = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_BRAILLE = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_CANADIAN_SYLLABICS = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) , HB_SCRIPT_CHEROKEE = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_ETHIOPIC = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_KHMER = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) ,
  HB_SCRIPT_MONGOLIAN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_MYANMAR = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_OGHAM = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_RUNIC = ((hb_tag_t)((((uint32_t)( 'R' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) ,
  HB_SCRIPT_SINHALA = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_SYRIAC = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_THAANA = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_YI = ((hb_tag_t)((((uint32_t)( 'Y' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'i' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_DESERET = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_GOTHIC = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_OLD_ITALIC = ((hb_tag_t)((((uint32_t)( 'I' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_BUHID = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_HANUNOO = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_TAGALOG = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_TAGBANWA = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_CYPRIOT = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'p' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) ,
  HB_SCRIPT_LIMBU = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_LINEAR_B = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_OSMANYA = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_SHAVIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'w' )&0xFF))) ,
  HB_SCRIPT_TAI_LE = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'e' )&0xFF))) , HB_SCRIPT_UGARITIC = ((hb_tag_t)((((uint32_t)( 'U' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_BUGINESE = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_COPTIC = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) ,
  HB_SCRIPT_GLAGOLITIC = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_KHAROSHTHI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_NEW_TAI_LUE = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) , HB_SCRIPT_OLD_PERSIAN = ((hb_tag_t)((((uint32_t)( 'X' )&0xFF)<<24)|(((uint32_t)( 'p' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) ,
  HB_SCRIPT_SYLOTI_NAGRI = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_TIFINAGH = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'f' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_BALINESE = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_CUNEIFORM = ((hb_tag_t)((((uint32_t)( 'X' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'x' )&0xFF))) ,
  HB_SCRIPT_NKO = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'k' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_PHAGS_PA = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_PHOENICIAN = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'x' )&0xFF))) , HB_SCRIPT_CARIAN = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_CHAM = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_KAYAH_LI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_LEPCHA = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_LYCIAN = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'c' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_LYDIAN = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_OL_CHIKI = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'c' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_REJANG = ((hb_tag_t)((((uint32_t)( 'R' )&0xFF)<<24)|(((uint32_t)( 'j' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_SAURASHTRA = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) ,
  HB_SCRIPT_SUNDANESE = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_VAI = ((hb_tag_t)((((uint32_t)( 'V' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'i' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_AVESTAN = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'v' )&0xFF)<<16)|(((uint32_t)( 's' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_BAMUM = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'p' )&0xFF))) , HB_SCRIPT_IMPERIAL_ARAMAIC = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_JAVANESE = ((hb_tag_t)((((uint32_t)( 'J' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'v' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_KAITHI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_LISU = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 's' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) , HB_SCRIPT_MEETEI_MAYEK = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_OLD_SOUTH_ARABIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_OLD_TURKIC = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_SAMARITAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_TAI_THAM = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) ,
  HB_SCRIPT_TAI_VIET = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'v' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_BATAK = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_BRAHMI = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_MANDAIC = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_CHAKMA = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_MEROITIC_CURSIVE = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_MEROITIC_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_MIAO = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_SHARADA = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_SORA_SOMPENG = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_TAKRI = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_BASSA_VAH = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 's' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) ,
  HB_SCRIPT_CAUCASIAN_ALBANIAN = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_DUPLOYAN = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_ELBASAN = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'b' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_GRANTHA = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'n' )&0xFF))) ,
  HB_SCRIPT_KHOJKI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'j' )&0xFF))) , HB_SCRIPT_KHUDAWADI = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_LINEAR_A = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_MAHAJANI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'j' )&0xFF))) ,
  HB_SCRIPT_MANICHAEAN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_MENDE_KIKAKUI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_MODI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_MRO = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) ,
  HB_SCRIPT_NABATAEAN = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'b' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_OLD_NORTH_ARABIAN = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_OLD_PERMIC = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_PAHAWH_HMONG = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'm' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) ,
  HB_SCRIPT_PALMYRENE = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_PAU_CIN_HAU = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_PSALTER_PAHLAVI = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'p' )&0xFF))) , HB_SCRIPT_SIDDHAM = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_TIRHUTA = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_WARANG_CITI = ((hb_tag_t)((((uint32_t)( 'W' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_AHOM = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'w' )&0xFF))) ,
  HB_SCRIPT_HATRAN = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_MULTANI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_OLD_HUNGARIAN = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_SIGNWRITING = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'w' )&0xFF))) ,
  HB_SCRIPT_ADLAM = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'd' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_BHAIKSUKI = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) , HB_SCRIPT_MARCHEN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_OSAGE = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'e' )&0xFF))) ,
  HB_SCRIPT_TANGUT = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_NEWA = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'w' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_MASARAM_GONDI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_NUSHU = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_SOYOMBO = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_ZANABAZAR_SQUARE = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_DOGRA = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_GUNJALA_GONDI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) ,
  HB_SCRIPT_HANIFI_ROHINGYA = ((hb_tag_t)((((uint32_t)( 'R' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_MAKASAR = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_MEDEFAIDRIN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'f' )&0xFF))) , HB_SCRIPT_OLD_SOGDIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) ,
  HB_SCRIPT_SOGDIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_ELYMAIC = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_NANDINAGARI = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'm' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'p' )&0xFF))) ,
  HB_SCRIPT_WANCHO = ((hb_tag_t)((((uint32_t)( 'W' )&0xFF)<<24)|(((uint32_t)( 'c' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_CHORASMIAN = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) , HB_SCRIPT_DIVES_AKURU = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_KHITAN_SMALL_SCRIPT = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) ,
  HB_SCRIPT_YEZIDI = ((hb_tag_t)((((uint32_t)( 'Y' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'z' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_INVALID = ((hb_tag_t)((((uint32_t)( 0 )&0xFF)<<24)|(((uint32_t)( 0 )&0xFF)<<16)|(((uint32_t)( 0 )&0xFF)<<8)|((uint32_t)( 0 )&0xFF))) , _HB_SCRIPT_MAX_VALUE = ((hb_tag_t)((((uint32_t)( 0x7f )&0xFF)<<24)|(((uint32_t)( 0xff )&0xFF)<<16)|(((uint32_t)( 0xff )&0xFF)<<8)|((uint32_t)( 0xff )&0xFF))) , _HB_SCRIPT_MAX_VALUE_SIGNED = ((hb_tag_t)((((uint32_t)( 0x7f )&0xFF)<<24)|(((uint32_t)( 0xff )&0xFF)<<16)|(((uint32_t)( 0xff )&0xFF)<<8)|((uint32_t)( 0xff )&0xFF))) ,
  HB_SCRIPT_COMMON = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'y' )&0xFF))) , HB_SCRIPT_INHERITED = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_UNKNOWN = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'z' )&0xFF)<<16)|(((uint32_t)( 'z' )&0xFF)<<8)|((uint32_t)( 'z' )&0xFF))) , HB_SCRIPT_ARABIC = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) ,
  HB_SCRIPT_ARMENIAN = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'n' )&0xFF))) , HB_SCRIPT_BENGALI = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_CYRILLIC = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_DEVANAGARI = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'v' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) ,
  HB_SCRIPT_GEORGIAN = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_GREEK = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_GUJARATI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'j' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_GURMUKHI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_HANGUL = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_HAN = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_HEBREW = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'b' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_HIRAGANA = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) ,
  HB_SCRIPT_KANNADA = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'n' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_KATAKANA = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_LAO = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_LATIN = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'n' )&0xFF))) ,
  HB_SCRIPT_MALAYALAM = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_ORIYA = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_TAMIL = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_TELUGU = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_THAI = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_TIBETAN = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'b' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_BOPOMOFO = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_BRAILLE = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_CANADIAN_SYLLABICS = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) , HB_SCRIPT_CHEROKEE = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_ETHIOPIC = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_KHMER = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) ,
  HB_SCRIPT_MONGOLIAN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_MYANMAR = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_OGHAM = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_RUNIC = ((hb_tag_t)((((uint32_t)( 'R' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) ,
  HB_SCRIPT_SINHALA = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_SYRIAC = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_THAANA = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_YI = ((hb_tag_t)((((uint32_t)( 'Y' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'i' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_DESERET = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_GOTHIC = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_OLD_ITALIC = ((hb_tag_t)((((uint32_t)( 'I' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_BUHID = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_HANUNOO = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_TAGALOG = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_TAGBANWA = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_CYPRIOT = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'p' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) ,
  HB_SCRIPT_LIMBU = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_LINEAR_B = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_OSMANYA = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_SHAVIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'w' )&0xFF))) ,
  HB_SCRIPT_TAI_LE = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'e' )&0xFF))) , HB_SCRIPT_UGARITIC = ((hb_tag_t)((((uint32_t)( 'U' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_BUGINESE = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_COPTIC = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) ,
  HB_SCRIPT_GLAGOLITIC = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_KHAROSHTHI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_NEW_TAI_LUE = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) , HB_SCRIPT_OLD_PERSIAN = ((hb_tag_t)((((uint32_t)( 'X' )&0xFF)<<24)|(((uint32_t)( 'p' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) ,
  HB_SCRIPT_SYLOTI_NAGRI = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_TIFINAGH = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'f' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_BALINESE = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_CUNEIFORM = ((hb_tag_t)((((uint32_t)( 'X' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'x' )&0xFF))) ,
  HB_SCRIPT_NKO = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'k' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_PHAGS_PA = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_PHOENICIAN = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'x' )&0xFF))) , HB_SCRIPT_CARIAN = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_CHAM = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_KAYAH_LI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_LEPCHA = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_LYCIAN = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'c' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_LYDIAN = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'y' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_OL_CHIKI = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'c' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_REJANG = ((hb_tag_t)((((uint32_t)( 'R' )&0xFF)<<24)|(((uint32_t)( 'j' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_SAURASHTRA = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) ,
  HB_SCRIPT_SUNDANESE = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_VAI = ((hb_tag_t)((((uint32_t)( 'V' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'i' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_AVESTAN = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'v' )&0xFF)<<16)|(((uint32_t)( 's' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_BAMUM = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'p' )&0xFF))) , HB_SCRIPT_IMPERIAL_ARAMAIC = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_JAVANESE = ((hb_tag_t)((((uint32_t)( 'J' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'v' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_KAITHI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_LISU = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 's' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) , HB_SCRIPT_MEETEI_MAYEK = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 't' )&0xFF)<<16)|(((uint32_t)( 'e' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) ,
  HB_SCRIPT_OLD_SOUTH_ARABIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_OLD_TURKIC = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_SAMARITAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'm' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_TAI_THAM = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) ,
  HB_SCRIPT_TAI_VIET = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'v' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_BATAK = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_BRAHMI = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_MANDAIC = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_CHAKMA = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_MEROITIC_CURSIVE = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_MEROITIC_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_MIAO = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_SHARADA = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_SORA_SOMPENG = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_TAKRI = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_BASSA_VAH = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 's' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) ,
  HB_SCRIPT_CAUCASIAN_ALBANIAN = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_DUPLOYAN = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'p' )&0xFF)<<8)|((uint32_t)( 'l' )&0xFF))) , HB_SCRIPT_ELBASAN = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'b' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_GRANTHA = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'n' )&0xFF))) ,
  HB_SCRIPT_KHOJKI = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'j' )&0xFF))) , HB_SCRIPT_KHUDAWADI = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_LINEAR_A = ((hb_tag_t)((((uint32_t)( 'L' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_MAHAJANI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'j' )&0xFF))) ,
  HB_SCRIPT_MANICHAEAN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_MENDE_KIKAKUI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_MODI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_MRO = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'r' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) ,
  HB_SCRIPT_NABATAEAN = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'b' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_OLD_NORTH_ARABIAN = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_OLD_PERMIC = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_PAHAWH_HMONG = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'm' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) ,
  HB_SCRIPT_PALMYRENE = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_PAU_CIN_HAU = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_PSALTER_PAHLAVI = ((hb_tag_t)((((uint32_t)( 'P' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'p' )&0xFF))) , HB_SCRIPT_SIDDHAM = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) ,
  HB_SCRIPT_TIRHUTA = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'h' )&0xFF))) , HB_SCRIPT_WARANG_CITI = ((hb_tag_t)((((uint32_t)( 'W' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_AHOM = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'o' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'u' )&0xFF)<<8)|((uint32_t)( 'w' )&0xFF))) ,
  HB_SCRIPT_HATRAN = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_MULTANI = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 't' )&0xFF))) , HB_SCRIPT_OLD_HUNGARIAN = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'u' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_SIGNWRITING = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'g' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'w' )&0xFF))) ,
  HB_SCRIPT_ADLAM = ((hb_tag_t)((((uint32_t)( 'A' )&0xFF)<<24)|(((uint32_t)( 'd' )&0xFF)<<16)|(((uint32_t)( 'l' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_BHAIKSUKI = ((hb_tag_t)((((uint32_t)( 'B' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) , HB_SCRIPT_MARCHEN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 'c' )&0xFF))) , HB_SCRIPT_OSAGE = ((hb_tag_t)((((uint32_t)( 'O' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'e' )&0xFF))) ,
  HB_SCRIPT_TANGUT = ((hb_tag_t)((((uint32_t)( 'T' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_NEWA = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'w' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_MASARAM_GONDI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_NUSHU = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 's' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'u' )&0xFF))) ,
  HB_SCRIPT_SOYOMBO = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_ZANABAZAR_SQUARE = ((hb_tag_t)((((uint32_t)( 'Z' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'b' )&0xFF))) , HB_SCRIPT_DOGRA = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'r' )&0xFF))) , HB_SCRIPT_GUNJALA_GONDI = ((hb_tag_t)((((uint32_t)( 'G' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) ,
  HB_SCRIPT_HANIFI_ROHINGYA = ((hb_tag_t)((((uint32_t)( 'R' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'g' )&0xFF))) , HB_SCRIPT_MAKASAR = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'k' )&0xFF)<<8)|((uint32_t)( 'a' )&0xFF))) , HB_SCRIPT_MEDEFAIDRIN = ((hb_tag_t)((((uint32_t)( 'M' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'd' )&0xFF)<<8)|((uint32_t)( 'f' )&0xFF))) , HB_SCRIPT_OLD_SOGDIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) ,
  HB_SCRIPT_SOGDIAN = ((hb_tag_t)((((uint32_t)( 'S' )&0xFF)<<24)|(((uint32_t)( 'o' )&0xFF)<<16)|(((uint32_t)( 'g' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_ELYMAIC = ((hb_tag_t)((((uint32_t)( 'E' )&0xFF)<<24)|(((uint32_t)( 'l' )&0xFF)<<16)|(((uint32_t)( 'y' )&0xFF)<<8)|((uint32_t)( 'm' )&0xFF))) , HB_SCRIPT_NANDINAGARI = ((hb_tag_t)((((uint32_t)( 'N' )&0xFF)<<24)|(((uint32_t)( 'a' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'd' )&0xFF))) , HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = ((hb_tag_t)((((uint32_t)( 'H' )&0xFF)<<24)|(((uint32_t)( 'm' )&0xFF)<<16)|(((uint32_t)( 'n' )&0xFF)<<8)|((uint32_t)( 'p' )&0xFF))) ,
  HB_SCRIPT_WANCHO = ((hb_tag_t)((((uint32_t)( 'W' )&0xFF)<<24)|(((uint32_t)( 'c' )&0xFF)<<16)|(((uint32_t)( 'h' )&0xFF)<<8)|((uint32_t)( 'o' )&0xFF))) , HB_SCRIPT_CHORASMIAN = ((hb_tag_t)((((uint32_t)( 'C' )&0xFF)<<24)|(((uint32_t)( 'h' )&0xFF)<<16)|(((uint32_t)( 'r' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) , HB_SCRIPT_DIVES_AKURU = ((hb_tag_t)((((uint32_t)( 'D' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 'a' )&0xFF)<<8)|((uint32_t)( 'k' )&0xFF))) , HB_SCRIPT_KHITAN_SMALL_SCRIPT = ((hb_tag_t)((((uint32_t)( 'K' )&0xFF)<<24)|(((uint32_t)( 'i' )&0xFF)<<16)|(((uint32_t)( 't' )&0xFF)<<8)|((uint32_t)( 's' )&0xFF))) ,
  HB_SCRIPT_YEZIDI = ((hb_tag_t)((((uint32_t)( 'Y' )&0xFF)<<24)|(((uint32_t)( 'e' )&0xFF)<<16)|(((uint32_t)( 'z' )&0xFF)<<8)|((uint32_t)( 'i' )&0xFF))) , HB_SCRIPT_INVALID = ((hb_tag_t)((((uint32_t)( 0 )&0xFF)<<24)|(((uint32_t)( 0 )&0xFF)<<16)|(((uint32_t)( 0 )&0xFF)<<8)|((uint32_t)( 0 )&0xFF))) , _HB_SCRIPT_MAX_VALUE = ((hb_tag_t)((((uint32_t)( 0x7f )&0xFF)<<24)|(((uint32_t)( 0xff )&0xFF)<<16)|(((uint32_t)( 0xff )&0xFF)<<8)|((uint32_t)( 0xff )&0xFF))) , _HB_SCRIPT_MAX_VALUE_SIGNED = ((hb_tag_t)((((uint32_t)( 0x7f )&0xFF)<<24)|(((uint32_t)( 0xff )&0xFF)<<16)|(((uint32_t)( 0xff )&0xFF)<<8)|((uint32_t)( 0xff )&0xFF)))
}
 

Functions

hb_tag_t hb_tag_from_string (const char *str, int len)
 
void hb_tag_to_string (hb_tag_t tag, char *buf)
 
hb_direction_t hb_direction_from_string (const char *str, int len)
 
const char * hb_direction_to_string (hb_direction_t direction)
 
hb_language_t hb_language_from_string (const char *str, int len)
 
const char * hb_language_to_string (hb_language_t language)
 
hb_language_t hb_language_get_default (void)
 
hb_script_t hb_script_from_iso15924_tag (hb_tag_t tag)
 
hb_script_t hb_script_from_string (const char *str, int len)
 
hb_tag_t hb_script_to_iso15924_tag (hb_script_t script)
 
hb_direction_t hb_script_get_horizontal_direction (hb_script_t script)
 
hb_bool_t hb_feature_from_string (const char *str, int len, hb_feature_t *feature)
 
void hb_feature_to_string (hb_feature_t *feature, char *buf, unsigned int size)
 
hb_bool_t hb_variation_from_string (const char *str, int len, hb_variation_t *variation)
 
void hb_variation_to_string (hb_variation_t *variation, char *buf, unsigned int size)
 
uint8_t hb_color_get_alpha (hb_color_t color)
 
uint8_t hb_color_get_red (hb_color_t color)
 
uint8_t hb_color_get_green (hb_color_t color)
 
uint8_t hb_color_get_blue (hb_color_t color)
 

Macro Definition Documentation

◆ HB_BEGIN_DECLS

#define HB_BEGIN_DECLS

Definition at line 45 of file hb-common.h.

◆ HB_COLOR

#define HB_COLOR (   b,
  g,
  r,
  a 
)    ((hb_color_t) HB_TAG ((b),(g),(r),(a)))

Definition at line 772 of file hb-common.h.

◆ hb_color_get_alpha

#define hb_color_get_alpha (   color)    ((color) & 0xFF)

Definition at line 776 of file hb-common.h.

◆ hb_color_get_blue

#define hb_color_get_blue (   color)    (((color) >> 24) & 0xFF)

Definition at line 788 of file hb-common.h.

◆ hb_color_get_green

#define hb_color_get_green (   color)    (((color) >> 16) & 0xFF)

Definition at line 784 of file hb-common.h.

◆ hb_color_get_red

#define hb_color_get_red (   color)    (((color) >> 8) & 0xFF)

Definition at line 780 of file hb-common.h.

◆ HB_DEPRECATED

#define HB_DEPRECATED

Definition at line 77 of file hb-common.h.

◆ HB_DEPRECATED_FOR

#define HB_DEPRECATED_FOR (   f)    HB_DEPRECATED

Definition at line 85 of file hb-common.h.

◆ HB_DIRECTION_IS_BACKWARD

#define HB_DIRECTION_IS_BACKWARD (   dir)    ((((unsigned int) (dir)) & ~2U) == 5)

Definition at line 252 of file hb-common.h.

◆ HB_DIRECTION_IS_FORWARD

#define HB_DIRECTION_IS_FORWARD (   dir)    ((((unsigned int) (dir)) & ~2U) == 4)

Definition at line 243 of file hb-common.h.

◆ HB_DIRECTION_IS_HORIZONTAL

#define HB_DIRECTION_IS_HORIZONTAL (   dir)    ((((unsigned int) (dir)) & ~1U) == 4)

Definition at line 225 of file hb-common.h.

◆ HB_DIRECTION_IS_VALID

#define HB_DIRECTION_IS_VALID (   dir)    ((((unsigned int) (dir)) & ~3U) == 4)

Definition at line 215 of file hb-common.h.

◆ HB_DIRECTION_IS_VERTICAL

#define HB_DIRECTION_IS_VERTICAL (   dir)    ((((unsigned int) (dir)) & ~1U) == 6)

Definition at line 234 of file hb-common.h.

◆ HB_DIRECTION_REVERSE

#define HB_DIRECTION_REVERSE (   dir)    ((hb_direction_t) (((unsigned int) (dir)) ^ 1))

Definition at line 261 of file hb-common.h.

◆ HB_END_DECLS

#define HB_END_DECLS

Definition at line 46 of file hb-common.h.

◆ HB_EXTERN

#define HB_EXTERN   extern

Definition at line 37 of file hb-common.h.

◆ HB_FEATURE_GLOBAL_END

#define HB_FEATURE_GLOBAL_END   ((unsigned int) -1)

HB_FEATURE_GLOBAL_END

Since: 2.0.0

Definition at line 706 of file hb-common.h.

◆ HB_FEATURE_GLOBAL_START

#define HB_FEATURE_GLOBAL_START   0

HB_FEATURE_GLOBAL_START

Since: 2.0.0

Definition at line 700 of file hb-common.h.

◆ HB_LANGUAGE_INVALID

#define HB_LANGUAGE_INVALID   ((hb_language_t) 0)

Definition at line 274 of file hb-common.h.

◆ HB_TAG

#define HB_TAG (   c1,
  c2,
  c3,
  c4 
)    ((hb_tag_t)((((uint32_t)(c1)&0xFF)<<24)|(((uint32_t)(c2)&0xFF)<<16)|(((uint32_t)(c3)&0xFF)<<8)|((uint32_t)(c4)&0xFF)))

HB_TAG:

Constructs an hb_tag_t from four characters.

Definition at line 155 of file hb-common.h.

◆ HB_TAG_MAX

#define HB_TAG_MAX   HB_TAG(0xff,0xff,0xff,0xff)

Definition at line 166 of file hb-common.h.

◆ HB_TAG_MAX_SIGNED

#define HB_TAG_MAX_SIGNED   HB_TAG(0x7f,0xff,0xff,0xff)

Definition at line 167 of file hb-common.h.

◆ HB_TAG_NONE

#define HB_TAG_NONE   HB_TAG(0,0,0,0)

Definition at line 165 of file hb-common.h.

◆ HB_UNTAG

#define HB_UNTAG (   tag)    (uint8_t)(((tag)>>24)&0xFF), (uint8_t)(((tag)>>16)&0xFF), (uint8_t)(((tag)>>8)&0xFF), (uint8_t)((tag)&0xFF)

HB_UNTAG:

Extracts the characters from an hb_tag_t.

Definition at line 163 of file hb-common.h.

Typedef Documentation

◆ hb_bool_t

typedef int hb_bool_t

hb_bool_t:

Data type for booleans.

Definition at line 97 of file hb-common.h.

◆ hb_codepoint_t

hb_codepoint_t:

Data type for holding Unicode codepoints. Also used to hold glyph IDs.

Definition at line 106 of file hb-common.h.

◆ hb_color_t

hb_color_t:

Data type for holding color values. Colors are eight bits per channel RGB plus alpha transparency.

Since: 2.1.0

Definition at line 770 of file hb-common.h.

◆ hb_destroy_func_t

typedef void(* hb_destroy_func_t) (void *user_data)

Definition at line 690 of file hb-common.h.

◆ hb_feature_t

typedef struct hb_feature_t hb_feature_t

hb_feature_t: @tag: The hb_tag_t tag of the feature @value: The value of the feature. 0 disables the feature, non-zero (usually 1) enables the feature. For features implemented as lookup type 3 (like 'salt') the @value is a one based index into the alternates. @start: the cluster to start applying this feature setting (inclusive). @end: the cluster to end applying this feature setting (exclusive).

The hb_feature_t is the structure that holds information about requested feature application. The feature will be applied with the given value to all glyphs which are in clusters between @start (inclusive) and @end (exclusive). Setting start to @HB_FEATURE_GLOBAL_START and end to @HB_FEATURE_GLOBAL_END specifies that the feature always applies to the entire buffer.

◆ hb_language_t

Definition at line 266 of file hb-common.h.

◆ hb_mask_t

hb_mask_t:

Data type for bitmasks.

Definition at line 122 of file hb-common.h.

◆ hb_position_t

hb_position_t:

Data type for holding a single coordinate value. Contour points and other multi-dimensional data are stored as tuples of hb_position_t's.

Definition at line 115 of file hb-common.h.

◆ hb_tag_t

typedef uint32_t hb_tag_t

hb_tag_t:

Data type for tag identifiers. Tags are four byte integers, each byte representing a character.

Tags are used to identify tables, design-variation axes, scripts, languages, font features, and baselines with human-readable names.

Definition at line 147 of file hb-common.h.

◆ hb_user_data_key_t

hb_user_data_key_t:

Data structure for holding user-data keys.

◆ hb_var_int_t

typedef union _hb_var_int_t hb_var_int_t

◆ hb_variation_t

hb_variation_t: @tag: The hb_tag_t tag of the variation-axis name @value: The value of the variation axis

Data type for holding variation data. Registered OpenType variation-axis tags are listed at https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg

Since: 1.4.2

Enumeration Type Documentation

◆ hb_direction_t

hb_direction_t: @HB_DIRECTION_INVALID: Initial, unset direction. @HB_DIRECTION_LTR: Text is set horizontally from left to right. @HB_DIRECTION_RTL: Text is set horizontally from right to left. @HB_DIRECTION_TTB: Text is set vertically from top to bottom. @HB_DIRECTION_BTT: Text is set vertically from bottom to top.

The direction of a text segment or buffer.

A segment can also be tested for horizontal or vertical orientation (irrespective of specific direction) with HB_DIRECTION_IS_HORIZONTAL() or HB_DIRECTION_IS_VERTICAL().

Enumerator
HB_DIRECTION_INVALID 
HB_DIRECTION_LTR 
HB_DIRECTION_RTL 
HB_DIRECTION_TTB 
HB_DIRECTION_BTT 
HB_DIRECTION_INVALID 
HB_DIRECTION_LTR 
HB_DIRECTION_RTL 
HB_DIRECTION_TTB 
HB_DIRECTION_BTT 

Definition at line 193 of file hb-common.h.

◆ hb_script_t

hb_script_t: @HB_SCRIPT_COMMON: HB_TAG ('Z','y','y','y') @HB_SCRIPT_INHERITED: HB_TAG ('Z','i','n','h') @HB_SCRIPT_UNKNOWN: HB_TAG ('Z','z','z','z') @HB_SCRIPT_ARABIC @HB_SCRIPT_ARMENIAN @HB_SCRIPT_BENGALI @HB_SCRIPT_CYRILLIC @HB_SCRIPT_DEVANAGARI @HB_SCRIPT_GEORGIAN @HB_SCRIPT_GREEK @HB_SCRIPT_GUJARATI @HB_SCRIPT_GURMUKHI @HB_SCRIPT_HANGUL @HB_SCRIPT_HAN @HB_SCRIPT_HEBREW @HB_SCRIPT_HIRAGANA @HB_SCRIPT_KANNADA @HB_SCRIPT_KATAKANA @HB_SCRIPT_LAO @HB_SCRIPT_LATIN @HB_SCRIPT_MALAYALAM @HB_SCRIPT_ORIYA @HB_SCRIPT_TAMIL @HB_SCRIPT_TELUGU @HB_SCRIPT_THAI @HB_SCRIPT_TIBETAN @HB_SCRIPT_BOPOMOFO @HB_SCRIPT_BRAILLE @HB_SCRIPT_CANADIAN_SYLLABICS @HB_SCRIPT_CHEROKEE @HB_SCRIPT_ETHIOPIC @HB_SCRIPT_KHMER @HB_SCRIPT_MONGOLIAN @HB_SCRIPT_MYANMAR @HB_SCRIPT_OGHAM @HB_SCRIPT_RUNIC @HB_SCRIPT_SINHALA @HB_SCRIPT_SYRIAC @HB_SCRIPT_THAANA @HB_SCRIPT_YI @HB_SCRIPT_DESERET @HB_SCRIPT_GOTHIC @HB_SCRIPT_OLD_ITALIC @HB_SCRIPT_BUHID @HB_SCRIPT_HANUNOO @HB_SCRIPT_TAGALOG @HB_SCRIPT_TAGBANWA @HB_SCRIPT_CYPRIOT @HB_SCRIPT_LIMBU @HB_SCRIPT_LINEAR_B @HB_SCRIPT_OSMANYA @HB_SCRIPT_SHAVIAN @HB_SCRIPT_TAI_LE @HB_SCRIPT_UGARITIC @HB_SCRIPT_BUGINESE @HB_SCRIPT_COPTIC @HB_SCRIPT_GLAGOLITIC @HB_SCRIPT_KHAROSHTHI @HB_SCRIPT_NEW_TAI_LUE @HB_SCRIPT_OLD_PERSIAN @HB_SCRIPT_SYLOTI_NAGRI @HB_SCRIPT_TIFINAGH @HB_SCRIPT_BALINESE @HB_SCRIPT_CUNEIFORM @HB_SCRIPT_NKO @HB_SCRIPT_PHAGS_PA @HB_SCRIPT_PHOENICIAN @HB_SCRIPT_CARIAN @HB_SCRIPT_CHAM @HB_SCRIPT_KAYAH_LI @HB_SCRIPT_LEPCHA @HB_SCRIPT_LYCIAN @HB_SCRIPT_LYDIAN @HB_SCRIPT_OL_CHIKI @HB_SCRIPT_REJANG @HB_SCRIPT_SAURASHTRA @HB_SCRIPT_SUNDANESE @HB_SCRIPT_VAI @HB_SCRIPT_AVESTAN @HB_SCRIPT_BAMUM @HB_SCRIPT_EGYPTIAN_HIEROGLYPHS @HB_SCRIPT_IMPERIAL_ARAMAIC @HB_SCRIPT_INSCRIPTIONAL_PAHLAVI @HB_SCRIPT_INSCRIPTIONAL_PARTHIAN @HB_SCRIPT_JAVANESE @HB_SCRIPT_KAITHI @HB_SCRIPT_LISU @HB_SCRIPT_MEETEI_MAYEK @HB_SCRIPT_OLD_SOUTH_ARABIAN @HB_SCRIPT_OLD_TURKIC @HB_SCRIPT_SAMARITAN @HB_SCRIPT_TAI_THAM @HB_SCRIPT_TAI_VIET @HB_SCRIPT_BATAK @HB_SCRIPT_BRAHMI @HB_SCRIPT_MANDAIC @HB_SCRIPT_CHAKMA @HB_SCRIPT_MEROITIC_CURSIVE @HB_SCRIPT_MEROITIC_HIEROGLYPHS @HB_SCRIPT_MIAO @HB_SCRIPT_SHARADA @HB_SCRIPT_SORA_SOMPENG @HB_SCRIPT_TAKRI @HB_SCRIPT_BASSA_VAH @HB_SCRIPT_CAUCASIAN_ALBANIAN @HB_SCRIPT_DUPLOYAN @HB_SCRIPT_ELBASAN @HB_SCRIPT_GRANTHA @HB_SCRIPT_KHOJKI @HB_SCRIPT_KHUDAWADI @HB_SCRIPT_LINEAR_A @HB_SCRIPT_MAHAJANI @HB_SCRIPT_MANICHAEAN @HB_SCRIPT_MENDE_KIKAKUI @HB_SCRIPT_MODI @HB_SCRIPT_MRO @HB_SCRIPT_NABATAEAN @HB_SCRIPT_OLD_NORTH_ARABIAN @HB_SCRIPT_OLD_PERMIC @HB_SCRIPT_PAHAWH_HMONG @HB_SCRIPT_PALMYRENE @HB_SCRIPT_PAU_CIN_HAU @HB_SCRIPT_PSALTER_PAHLAVI @HB_SCRIPT_SIDDHAM @HB_SCRIPT_TIRHUTA @HB_SCRIPT_WARANG_CITI @HB_SCRIPT_AHOM @HB_SCRIPT_ANATOLIAN_HIEROGLYPHS @HB_SCRIPT_HATRAN @HB_SCRIPT_MULTANI @HB_SCRIPT_OLD_HUNGARIAN @HB_SCRIPT_SIGNWRITING @HB_SCRIPT_ADLAM @HB_SCRIPT_BHAIKSUKI @HB_SCRIPT_MARCHEN @HB_SCRIPT_OSAGE @HB_SCRIPT_TANGUT @HB_SCRIPT_NEWA @HB_SCRIPT_MASARAM_GONDI @HB_SCRIPT_NUSHU @HB_SCRIPT_SOYOMBO @HB_SCRIPT_ZANABAZAR_SQUARE @HB_SCRIPT_DOGRA @HB_SCRIPT_GUNJALA_GONDI @HB_SCRIPT_HANIFI_ROHINGYA @HB_SCRIPT_MAKASAR @HB_SCRIPT_MEDEFAIDRIN @HB_SCRIPT_OLD_SOGDIAN @HB_SCRIPT_SOGDIAN @HB_SCRIPT_ELYMAIC @HB_SCRIPT_NANDINAGARI @HB_SCRIPT_NYIAKENG_PUACHUE_HMONG @HB_SCRIPT_WANCHO @HB_SCRIPT_INVALID: HB_TAG_NONE

Data type for scripts. Each hb_script_t's value is an hb_tag_t corresponding to the four-letter values defined by ISO 15924.

See also the Script (sc) property of the Unicode Character Database.

Enumerator
HB_SCRIPT_COMMON 
HB_SCRIPT_INHERITED 
HB_SCRIPT_UNKNOWN 
HB_SCRIPT_ARABIC 
HB_SCRIPT_ARMENIAN 
HB_SCRIPT_BENGALI 
HB_SCRIPT_CYRILLIC 
HB_SCRIPT_DEVANAGARI 
HB_SCRIPT_GEORGIAN 
HB_SCRIPT_GREEK 
HB_SCRIPT_GUJARATI 
HB_SCRIPT_GURMUKHI 
HB_SCRIPT_HANGUL 
HB_SCRIPT_HAN 
HB_SCRIPT_HEBREW 
HB_SCRIPT_HIRAGANA 
HB_SCRIPT_KANNADA 
HB_SCRIPT_KATAKANA 
HB_SCRIPT_LAO 
HB_SCRIPT_LATIN 
HB_SCRIPT_MALAYALAM 
HB_SCRIPT_ORIYA 
HB_SCRIPT_TAMIL 
HB_SCRIPT_TELUGU 
HB_SCRIPT_THAI 
HB_SCRIPT_TIBETAN 
HB_SCRIPT_BOPOMOFO 
HB_SCRIPT_BRAILLE 
HB_SCRIPT_CANADIAN_SYLLABICS 
HB_SCRIPT_CHEROKEE 
HB_SCRIPT_ETHIOPIC 
HB_SCRIPT_KHMER 
HB_SCRIPT_MONGOLIAN 
HB_SCRIPT_MYANMAR 
HB_SCRIPT_OGHAM 
HB_SCRIPT_RUNIC 
HB_SCRIPT_SINHALA 
HB_SCRIPT_SYRIAC 
HB_SCRIPT_THAANA 
HB_SCRIPT_YI 
HB_SCRIPT_DESERET 
HB_SCRIPT_GOTHIC 
HB_SCRIPT_OLD_ITALIC 
HB_SCRIPT_BUHID 
HB_SCRIPT_HANUNOO 
HB_SCRIPT_TAGALOG 
HB_SCRIPT_TAGBANWA 
HB_SCRIPT_CYPRIOT 
HB_SCRIPT_LIMBU 
HB_SCRIPT_LINEAR_B 
HB_SCRIPT_OSMANYA 
HB_SCRIPT_SHAVIAN 
HB_SCRIPT_TAI_LE 
HB_SCRIPT_UGARITIC 
HB_SCRIPT_BUGINESE 
HB_SCRIPT_COPTIC 
HB_SCRIPT_GLAGOLITIC 
HB_SCRIPT_KHAROSHTHI 
HB_SCRIPT_NEW_TAI_LUE 
HB_SCRIPT_OLD_PERSIAN 
HB_SCRIPT_SYLOTI_NAGRI 
HB_SCRIPT_TIFINAGH 
HB_SCRIPT_BALINESE 
HB_SCRIPT_CUNEIFORM 
HB_SCRIPT_NKO 
HB_SCRIPT_PHAGS_PA 
HB_SCRIPT_PHOENICIAN 
HB_SCRIPT_CARIAN 
HB_SCRIPT_CHAM 
HB_SCRIPT_KAYAH_LI 
HB_SCRIPT_LEPCHA 
HB_SCRIPT_LYCIAN 
HB_SCRIPT_LYDIAN 
HB_SCRIPT_OL_CHIKI 
HB_SCRIPT_REJANG 
HB_SCRIPT_SAURASHTRA 
HB_SCRIPT_SUNDANESE 
HB_SCRIPT_VAI 
HB_SCRIPT_AVESTAN 
HB_SCRIPT_BAMUM 
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS 
HB_SCRIPT_IMPERIAL_ARAMAIC 
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI 
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN 
HB_SCRIPT_JAVANESE 
HB_SCRIPT_KAITHI 
HB_SCRIPT_LISU 
HB_SCRIPT_MEETEI_MAYEK 
HB_SCRIPT_OLD_SOUTH_ARABIAN 
HB_SCRIPT_OLD_TURKIC 
HB_SCRIPT_SAMARITAN 
HB_SCRIPT_TAI_THAM 
HB_SCRIPT_TAI_VIET 
HB_SCRIPT_BATAK 
HB_SCRIPT_BRAHMI 
HB_SCRIPT_MANDAIC 
HB_SCRIPT_CHAKMA 
HB_SCRIPT_MEROITIC_CURSIVE 
HB_SCRIPT_MEROITIC_HIEROGLYPHS 
HB_SCRIPT_MIAO 
HB_SCRIPT_SHARADA 
HB_SCRIPT_SORA_SOMPENG 
HB_SCRIPT_TAKRI 
HB_SCRIPT_BASSA_VAH 
HB_SCRIPT_CAUCASIAN_ALBANIAN 
HB_SCRIPT_DUPLOYAN 
HB_SCRIPT_ELBASAN 
HB_SCRIPT_GRANTHA 
HB_SCRIPT_KHOJKI 
HB_SCRIPT_KHUDAWADI 
HB_SCRIPT_LINEAR_A 
HB_SCRIPT_MAHAJANI 
HB_SCRIPT_MANICHAEAN 
HB_SCRIPT_MENDE_KIKAKUI 
HB_SCRIPT_MODI 
HB_SCRIPT_MRO 
HB_SCRIPT_NABATAEAN 
HB_SCRIPT_OLD_NORTH_ARABIAN 
HB_SCRIPT_OLD_PERMIC 
HB_SCRIPT_PAHAWH_HMONG 
HB_SCRIPT_PALMYRENE 
HB_SCRIPT_PAU_CIN_HAU 
HB_SCRIPT_PSALTER_PAHLAVI 
HB_SCRIPT_SIDDHAM 
HB_SCRIPT_TIRHUTA 
HB_SCRIPT_WARANG_CITI 
HB_SCRIPT_AHOM 
HB_SCRIPT_ANATOLIAN_HIEROGLYPHS 
HB_SCRIPT_HATRAN 
HB_SCRIPT_MULTANI 
HB_SCRIPT_OLD_HUNGARIAN 
HB_SCRIPT_SIGNWRITING 
HB_SCRIPT_ADLAM 
HB_SCRIPT_BHAIKSUKI 
HB_SCRIPT_MARCHEN 
HB_SCRIPT_OSAGE 
HB_SCRIPT_TANGUT 
HB_SCRIPT_NEWA 
HB_SCRIPT_MASARAM_GONDI 
HB_SCRIPT_NUSHU 
HB_SCRIPT_SOYOMBO 
HB_SCRIPT_ZANABAZAR_SQUARE 
HB_SCRIPT_DOGRA 
HB_SCRIPT_GUNJALA_GONDI 
HB_SCRIPT_HANIFI_ROHINGYA 
HB_SCRIPT_MAKASAR 
HB_SCRIPT_MEDEFAIDRIN 
HB_SCRIPT_OLD_SOGDIAN 
HB_SCRIPT_SOGDIAN 
HB_SCRIPT_ELYMAIC 
HB_SCRIPT_NANDINAGARI 
HB_SCRIPT_NYIAKENG_PUACHUE_HMONG 
HB_SCRIPT_WANCHO 
HB_SCRIPT_CHORASMIAN 
HB_SCRIPT_DIVES_AKURU 
HB_SCRIPT_KHITAN_SMALL_SCRIPT 
HB_SCRIPT_YEZIDI 
HB_SCRIPT_INVALID 
_HB_SCRIPT_MAX_VALUE 
_HB_SCRIPT_MAX_VALUE_SIGNED 
HB_SCRIPT_COMMON 
HB_SCRIPT_INHERITED 
HB_SCRIPT_UNKNOWN 
HB_SCRIPT_ARABIC 
HB_SCRIPT_ARMENIAN 
HB_SCRIPT_BENGALI 
HB_SCRIPT_CYRILLIC 
HB_SCRIPT_DEVANAGARI 
HB_SCRIPT_GEORGIAN 
HB_SCRIPT_GREEK 
HB_SCRIPT_GUJARATI 
HB_SCRIPT_GURMUKHI 
HB_SCRIPT_HANGUL 
HB_SCRIPT_HAN 
HB_SCRIPT_HEBREW 
HB_SCRIPT_HIRAGANA 
HB_SCRIPT_KANNADA 
HB_SCRIPT_KATAKANA 
HB_SCRIPT_LAO 
HB_SCRIPT_LATIN 
HB_SCRIPT_MALAYALAM 
HB_SCRIPT_ORIYA 
HB_SCRIPT_TAMIL 
HB_SCRIPT_TELUGU 
HB_SCRIPT_THAI 
HB_SCRIPT_TIBETAN 
HB_SCRIPT_BOPOMOFO 
HB_SCRIPT_BRAILLE 
HB_SCRIPT_CANADIAN_SYLLABICS 
HB_SCRIPT_CHEROKEE 
HB_SCRIPT_ETHIOPIC 
HB_SCRIPT_KHMER 
HB_SCRIPT_MONGOLIAN 
HB_SCRIPT_MYANMAR 
HB_SCRIPT_OGHAM 
HB_SCRIPT_RUNIC 
HB_SCRIPT_SINHALA 
HB_SCRIPT_SYRIAC 
HB_SCRIPT_THAANA 
HB_SCRIPT_YI 
HB_SCRIPT_DESERET 
HB_SCRIPT_GOTHIC 
HB_SCRIPT_OLD_ITALIC 
HB_SCRIPT_BUHID 
HB_SCRIPT_HANUNOO 
HB_SCRIPT_TAGALOG 
HB_SCRIPT_TAGBANWA 
HB_SCRIPT_CYPRIOT 
HB_SCRIPT_LIMBU 
HB_SCRIPT_LINEAR_B 
HB_SCRIPT_OSMANYA 
HB_SCRIPT_SHAVIAN 
HB_SCRIPT_TAI_LE 
HB_SCRIPT_UGARITIC 
HB_SCRIPT_BUGINESE 
HB_SCRIPT_COPTIC 
HB_SCRIPT_GLAGOLITIC 
HB_SCRIPT_KHAROSHTHI 
HB_SCRIPT_NEW_TAI_LUE 
HB_SCRIPT_OLD_PERSIAN 
HB_SCRIPT_SYLOTI_NAGRI 
HB_SCRIPT_TIFINAGH 
HB_SCRIPT_BALINESE 
HB_SCRIPT_CUNEIFORM 
HB_SCRIPT_NKO 
HB_SCRIPT_PHAGS_PA 
HB_SCRIPT_PHOENICIAN 
HB_SCRIPT_CARIAN 
HB_SCRIPT_CHAM 
HB_SCRIPT_KAYAH_LI 
HB_SCRIPT_LEPCHA 
HB_SCRIPT_LYCIAN 
HB_SCRIPT_LYDIAN 
HB_SCRIPT_OL_CHIKI 
HB_SCRIPT_REJANG 
HB_SCRIPT_SAURASHTRA 
HB_SCRIPT_SUNDANESE 
HB_SCRIPT_VAI 
HB_SCRIPT_AVESTAN 
HB_SCRIPT_BAMUM 
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS 
HB_SCRIPT_IMPERIAL_ARAMAIC 
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI 
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN 
HB_SCRIPT_JAVANESE 
HB_SCRIPT_KAITHI 
HB_SCRIPT_LISU 
HB_SCRIPT_MEETEI_MAYEK 
HB_SCRIPT_OLD_SOUTH_ARABIAN 
HB_SCRIPT_OLD_TURKIC 
HB_SCRIPT_SAMARITAN 
HB_SCRIPT_TAI_THAM 
HB_SCRIPT_TAI_VIET 
HB_SCRIPT_BATAK 
HB_SCRIPT_BRAHMI 
HB_SCRIPT_MANDAIC 
HB_SCRIPT_CHAKMA 
HB_SCRIPT_MEROITIC_CURSIVE 
HB_SCRIPT_MEROITIC_HIEROGLYPHS 
HB_SCRIPT_MIAO 
HB_SCRIPT_SHARADA 
HB_SCRIPT_SORA_SOMPENG 
HB_SCRIPT_TAKRI 
HB_SCRIPT_BASSA_VAH 
HB_SCRIPT_CAUCASIAN_ALBANIAN 
HB_SCRIPT_DUPLOYAN 
HB_SCRIPT_ELBASAN 
HB_SCRIPT_GRANTHA 
HB_SCRIPT_KHOJKI 
HB_SCRIPT_KHUDAWADI 
HB_SCRIPT_LINEAR_A 
HB_SCRIPT_MAHAJANI 
HB_SCRIPT_MANICHAEAN 
HB_SCRIPT_MENDE_KIKAKUI 
HB_SCRIPT_MODI 
HB_SCRIPT_MRO 
HB_SCRIPT_NABATAEAN 
HB_SCRIPT_OLD_NORTH_ARABIAN 
HB_SCRIPT_OLD_PERMIC 
HB_SCRIPT_PAHAWH_HMONG 
HB_SCRIPT_PALMYRENE 
HB_SCRIPT_PAU_CIN_HAU 
HB_SCRIPT_PSALTER_PAHLAVI 
HB_SCRIPT_SIDDHAM 
HB_SCRIPT_TIRHUTA 
HB_SCRIPT_WARANG_CITI 
HB_SCRIPT_AHOM 
HB_SCRIPT_ANATOLIAN_HIEROGLYPHS 
HB_SCRIPT_HATRAN 
HB_SCRIPT_MULTANI 
HB_SCRIPT_OLD_HUNGARIAN 
HB_SCRIPT_SIGNWRITING 
HB_SCRIPT_ADLAM 
HB_SCRIPT_BHAIKSUKI 
HB_SCRIPT_MARCHEN 
HB_SCRIPT_OSAGE 
HB_SCRIPT_TANGUT 
HB_SCRIPT_NEWA 
HB_SCRIPT_MASARAM_GONDI 
HB_SCRIPT_NUSHU 
HB_SCRIPT_SOYOMBO 
HB_SCRIPT_ZANABAZAR_SQUARE 
HB_SCRIPT_DOGRA 
HB_SCRIPT_GUNJALA_GONDI 
HB_SCRIPT_HANIFI_ROHINGYA 
HB_SCRIPT_MAKASAR 
HB_SCRIPT_MEDEFAIDRIN 
HB_SCRIPT_OLD_SOGDIAN 
HB_SCRIPT_SOGDIAN 
HB_SCRIPT_ELYMAIC 
HB_SCRIPT_NANDINAGARI 
HB_SCRIPT_NYIAKENG_PUACHUE_HMONG 
HB_SCRIPT_WANCHO 
HB_SCRIPT_CHORASMIAN 
HB_SCRIPT_DIVES_AKURU 
HB_SCRIPT_KHITAN_SMALL_SCRIPT 
HB_SCRIPT_YEZIDI 
HB_SCRIPT_INVALID 
_HB_SCRIPT_MAX_VALUE 
_HB_SCRIPT_MAX_VALUE_SIGNED 

Definition at line 447 of file hb-common.h.

Function Documentation

◆ hb_color_get_alpha()

uint8_t hb_color_get_alpha ( hb_color_t  color)

hb_color_get_alpha: color: a hb_color_t we are interested in its channels.

Return value: Alpha channel value of the given color

Since: 2.1.0

Definition at line 1064 of file hb-common.cc.

◆ hb_color_get_blue()

uint8_t hb_color_get_blue ( hb_color_t  color)

hb_color_get_blue: color: a hb_color_t we are interested in its channels.

Return value: Blue channel value of the given color

Since: 2.1.0

Definition at line 1106 of file hb-common.cc.

◆ hb_color_get_green()

uint8_t hb_color_get_green ( hb_color_t  color)

hb_color_get_green: color: a hb_color_t we are interested in its channels.

Return value: Green channel value of the given color

Since: 2.1.0

Definition at line 1092 of file hb-common.cc.

◆ hb_color_get_red()

uint8_t hb_color_get_red ( hb_color_t  color)

hb_color_get_red: color: a hb_color_t we are interested in its channels.

Return value: Red channel value of the given color

Since: 2.1.0

Definition at line 1078 of file hb-common.cc.

◆ hb_direction_from_string()

hb_direction_t hb_direction_from_string ( const char *  str,
int  len 
)

hb_direction_from_string: @str: (array length=len) (element-type uint8_t): String to convert @len: Length of @str, or -1 if it is NULL-terminated

Converts a string to an hb_direction_t.

Matching is loose and applies only to the first letter. For examples, "LTR" and "left-to-right" will both return HB_DIRECTION_LTR.

Unmatched strings will return HB_DIRECTION_INVALID.

Return value: The hb_direction_t matching @str

Since: 0.9.2

Definition at line 166 of file hb-common.cc.

◆ hb_direction_to_string()

const char* hb_direction_to_string ( hb_direction_t  direction)

hb_direction_to_string: @direction: The hb_direction_t to convert

Converts an hb_direction_t to a string.

Return value: (transfer none): The string corresponding to @direction

Since: 0.9.2

Definition at line 193 of file hb-common.cc.

◆ hb_feature_from_string()

hb_bool_t hb_feature_from_string ( const char *  str,
int  len,
hb_feature_t feature 
)

hb_feature_from_string: @str: (array length=len) (element-type uint8_t): a string to parse @len: length of @str, or -1 if string is NULL terminated @feature: (out): the hb_feature_t to initialize with the parsed values

Parses a string into a hb_feature_t.

The format for specifying feature strings follows. All valid CSS font-feature-settings values other than 'normal' and the global values are also accepted, though not documented below. CSS string escapes are not supported.

The range indices refer to the positions between Unicode characters. The position before the first character is always 0.

The format is Python-esque. Here is how it all works:

<informaltable pgwide='1' align='left' frame='none'> <tgroup cols='5'> <thead> <row><entry>Syntax</entry> <entry>Value</entry> <entry>Start</entry> <entry>End</entry></row> </thead> <tbody> <row><entry>Setting value:</entry></row> <row><entry>kern</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> <row><entry>+kern</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> <row><entry>-kern</entry> <entry>0</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature off</entry></row> <row><entry>kern=0</entry> <entry>0</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature off</entry></row> <row><entry>kern=1</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> <row><entry>aalt=2</entry> <entry>2</entry> <entry>0</entry> <entry>∞</entry> <entry>Choose 2nd alternate</entry></row> <row><entry>Setting index:</entry></row> <row><entry>kern[]</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> <row><entry>kern[:]</entry> <entry>1</entry> <entry>0</entry> <entry>∞</entry> <entry>Turn feature on</entry></row> <row><entry>kern[5:]</entry> <entry>1</entry> <entry>5</entry> <entry>∞</entry> <entry>Turn feature on, partial</entry></row> <row><entry>kern[:5]</entry> <entry>1</entry> <entry>0</entry> <entry>5</entry> <entry>Turn feature on, partial</entry></row> <row><entry>kern[3:5]</entry> <entry>1</entry> <entry>3</entry> <entry>5</entry> <entry>Turn feature on, range</entry></row> <row><entry>kern[3]</entry> <entry>1</entry> <entry>3</entry> <entry>3+1</entry> <entry>Turn feature on, single char</entry></row> <row><entry>Mixing it all:</entry></row> <row><entry>aalt[3:5]=2</entry> <entry>2</entry> <entry>3</entry> <entry>5</entry> <entry>Turn 2nd alternate on for range</entry></row> </tbody> </tgroup> </informaltable>

Return value: true if @str is successfully parsed, false otherwise

Since: 0.9.5

Definition at line 913 of file hb-common.cc.

◆ hb_feature_to_string()

void hb_feature_to_string ( hb_feature_t feature,
char *  buf,
unsigned int  size 
)

hb_feature_to_string: @feature: an hb_feature_t to convert @buf: (array length=size) (out): output string @size: the allocated size of @buf

Converts a hb_feature_t into a NULL-terminated string in the format understood by hb_feature_from_string(). The client in responsible for allocating big enough size for @buf, 128 bytes is more than enough.

Since: 0.9.5

Definition at line 946 of file hb-common.cc.

◆ hb_language_from_string()

hb_language_t hb_language_from_string ( const char *  str,
int  len 
)

hb_language_from_string: @str: (array length=len) (element-type uint8_t): a string representing a BCP 47 language tag @len: length of the @str, or -1 if it is NULL-terminated.

Converts @str representing a BCP 47 language tag to the corresponding hb_language_t.

Return value: (transfer none): The hb_language_t corresponding to the BCP 47 language tag.

Since: 0.9.2

Definition at line 356 of file hb-common.cc.

◆ hb_language_get_default()

hb_language_t hb_language_get_default ( void  )

hb_language_get_default:

Fetch the default language from current locale.

<note>Note that the first time this function is called, it calls "setlocale (LC_CTYPE, nullptr)" to fetch current locale. The underlying setlocale function is, in many implementations, NOT threadsafe. To avoid problems, call this function once before multiple threads can call it. This function is only used from hb_buffer_guess_segment_properties() by HarfBuzz itself.</note>

Return value: (transfer none): The default language of the locale as an hb_language_t

Since: 0.9.2

Definition at line 415 of file hb-common.cc.

◆ hb_language_to_string()

const char* hb_language_to_string ( hb_language_t  language)

hb_language_to_string: @language: The hb_language_t to convert

Converts an hb_language_t to a string.

Return value: (transfer none): A NULL-terminated string representing the @language. Must not be freed by the caller.

Since: 0.9.2

Definition at line 390 of file hb-common.cc.

◆ hb_script_from_iso15924_tag()

hb_script_t hb_script_from_iso15924_tag ( hb_tag_t  tag)

hb_script_from_iso15924_tag: @tag: an hb_tag_t representing an ISO 15924 tag.

Converts an ISO 15924 script tag to a corresponding hb_script_t.

Return value: An hb_script_t corresponding to the ISO 15924 tag.

Since: 0.9.2

Definition at line 444 of file hb-common.cc.

◆ hb_script_from_string()

hb_script_t hb_script_from_string ( const char *  str,
int  len 
)

hb_script_from_string: @str: (array length=len) (element-type uint8_t): a string representing an ISO 15924 tag. @len: length of the @str, or -1 if it is NULL-terminated.

Converts a string @str representing an ISO 15924 script tag to a corresponding hb_script_t. Shorthand for hb_tag_from_string() then hb_script_from_iso15924_tag().

Return value: An hb_script_t corresponding to the ISO 15924 tag.

Since: 0.9.2

Definition at line 498 of file hb-common.cc.

◆ hb_script_get_horizontal_direction()

hb_direction_t hb_script_get_horizontal_direction ( hb_script_t  script)

hb_script_get_horizontal_direction: @script: The hb_script_t to query

Fetches the hb_direction_t of a script when it is set horizontally. All right-to-left scripts will return HB_DIRECTION_RTL. All left-to-right scripts will return HB_DIRECTION_LTR. Scripts that can be written either horizontally or vertically will return HB_DIRECTION_INVALID. Unknown scripts will return HB_DIRECTION_LTR.

Return value: The horizontal hb_direction_t of @script

Since: 0.9.2

Definition at line 536 of file hb-common.cc.

◆ hb_script_to_iso15924_tag()

hb_tag_t hb_script_to_iso15924_tag ( hb_script_t  script)

hb_script_to_iso15924_tag: @script: an hb_script_t to convert.

Converts an hb_script_t to a corresponding ISO 15924 script tag.

Return value: An hb_tag_t representing an ISO 15924 script tag.

Since: 0.9.2

Definition at line 515 of file hb-common.cc.

◆ hb_tag_from_string()

hb_tag_t hb_tag_from_string ( const char *  str,
int  len 
)

hb_tag_from_string: @str: (array length=len) (element-type uint8_t): String to convert @len: Length of @str, or -1 if it is NULL-terminated

Converts a string into an hb_tag_t. Valid tags are four characters. Shorter input strings will be padded with spaces. Longer input strings will be truncated.

Return value: The hb_tag_t corresponding to @str

Since: 0.9.2

Definition at line 102 of file hb-common.cc.

◆ hb_tag_to_string()

void hb_tag_to_string ( hb_tag_t  tag,
char *  buf 
)

hb_tag_to_string: @tag: hb_tag_t to convert @buf: (out caller-allocates) (array fixed-size=4) (element-type uint8_t): Converted string

Converts an hb_tag_t to a string and returns it in @buf. Strings will be four characters long.

Since: 0.9.5

Definition at line 131 of file hb-common.cc.

◆ hb_variation_from_string()

hb_bool_t hb_variation_from_string ( const char *  str,
int  len,
hb_variation_t variation 
)

hb_variation_from_string:

Since: 1.4.2

Definition at line 1010 of file hb-common.cc.

◆ hb_variation_to_string()

void hb_variation_to_string ( hb_variation_t variation,
char *  buf,
unsigned int  size 
)

hb_variation_to_string:

Since: 1.4.2

Definition at line 1036 of file hb-common.cc.