## hb-common

hb-common

## Functions

hb_tag_t | hb_tag_from_string ()
void | hb_tag_to_string ()
hb_direction_t | hb_direction_from_string ()
const char * | hb_direction_to_string ()
hb_script_t | hb_script_from_iso15924_tag ()
hb_script_t | hb_script_from_string ()
hb_tag_t | hb_script_to_iso15924_tag ()
hb_direction_t | hb_script_get_horizontal_direction ()
hb_language_t | hb_language_from_string ()
const char * | hb_language_to_string ()
hb_language_t | hb_language_get_default ()
void | (*hb_destroy_func_t) ()
#define | HB_TAG()
#define | HB_UNTAG()
#define | HB_DIRECTION_REVERSE()
#define | HB_DIRECTION_IS_BACKWARD()
#define | HB_DIRECTION_IS_FORWARD()
#define | HB_DIRECTION_IS_HORIZONTAL()
#define | HB_DIRECTION_IS_VALID()
#define | HB_DIRECTION_IS_VERTICAL()
#define | HB_LANGUAGE_INVALID

## Types and Values

typedef | hb_bool_t
typedef | hb_codepoint_t
enum | hb_direction_t
typedef | hb_language_t
typedef | hb_mask_t
typedef | hb_position_t
typedef | hb_tag_t
enum | hb_script_t
| hb_user_data_key_t
| hb_var_int_t
#define | HB_TAG_NONE
#define | HB_TAG_MAX
#define | HB_TAG_MAX_SIGNED

## Object Hierarchy

        GBoxed
        ╰── hb_user_data_key_t
        GEnum
        ├── hb_direction_t
        ╰── hb_script_t

## Description

## Functions

### hb_tag_from_string ()

    hb_tag_t
    hb_tag_from_string (const char *str,
                        int len);

#### Parameters

str | . | [array length=len][element-type uint8_t]

#### Returns

Since 0.9.2

### hb_tag_to_string ()

    void
    hb_tag_to_string (hb_tag_t tag,
                      char *buf);

#### Parameters

buf | . | [out caller-allocates][array fixed-size=4][element-type uint8_t]

Since 0.9.5

### hb_direction_from_string ()

    hb_direction_t
    hb_direction_from_string (const char *str,
                              int len);

#### Parameters

str | . | [array length=len][element-type uint8_t]

#### Returns

Since 0.9.2

### hb_direction_to_string ()

    const char *
    hb_direction_to_string (hb_direction_t direction);

#### Returns

.

[transfer none]

Since 0.9.2

### hb_script_from_iso15924_tag ()

    hb_script_t
    hb_script_from_iso15924_tag (hb_tag_t tag);

Converts an ISO 15924 script tag to a corresponding hb_script_t.

#### Parameters

tag | an hb_tag_t representing an ISO 15924 tag. |

#### Returns

An hb_script_t corresponding to the ISO 15924 tag.

Since 0.9.2

### hb_script_from_string ()

    hb_script_t
    hb_script_from_string (const char *str,
                           int len);

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()`.

#### Parameters

str | a string representing an ISO 15924 tag. | [array length=len][element-type uint8_t]
len | length of the `str` , or -1 if it is `NULL`-terminated. |

#### Returns

An hb_script_t corresponding to the ISO 15924 tag.

Since 0.9.2

### hb_script_to_iso15924_tag ()

    hb_tag_t
    hb_script_to_iso15924_tag (hb_script_t script);

See `hb_script_from_iso15924_tag()`.

#### Parameters

script | an hb_script_ to convert. |

#### Returns

An hb_tag_t representing an ISO 15924 script tag.

Since 0.9.2

### hb_script_get_horizontal_direction ()

    hb_direction_t
    hb_script_get_horizontal_direction (hb_script_t script);

#### Returns

Since 0.9.2

### hb_language_from_string ()

    hb_language_t
    hb_language_from_string (const char *str,
                             int len);

Converts `str` representing an ISO 639 language code to the corresponding hb_language_t.

#### Parameters

str | a string representing ISO 639 language code. | [array length=len][element-type uint8_t]
len | length of the `str` , or -1 if it is `NULL`-terminated. |

#### Returns

The hb_language_t corresponding to the ISO 639 language code.

[transfer none]

Since 0.9.2

### hb_language_to_string ()

    const char *
    hb_language_to_string (hb_language_t language);

See `hb_language_from_string()`.

#### Parameters

language | an hb_language_t to convert. |

#### Returns

A `NULL`-terminated string representing the `language` . Must not be freed by the caller.

[transfer none]

Since 0.9.2

### hb_language_get_default ()

    hb_language_t
    hb_language_get_default (void);

#### Returns

.

[transfer none]

Since 0.9.2

### hb_destroy_func_t ()

    void
    (*hb_destroy_func_t) (void *user_data);

### HB_TAG()

    #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))))

### HB_UNTAG()

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

### HB_DIRECTION_REVERSE()

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

### HB_DIRECTION_IS_BACKWARD()

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

### HB_DIRECTION_IS_FORWARD()

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

### HB_DIRECTION_IS_HORIZONTAL()

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

### HB_DIRECTION_IS_VALID()

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

### HB_DIRECTION_IS_VERTICAL()

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

### HB_LANGUAGE_INVALID

    #define HB_LANGUAGE_INVALID ((hb_language_t) NULL)

## Types and Values

### hb_bool_t

    typedef int hb_bool_t;

### hb_codepoint_t

    typedef uint32_t hb_codepoint_t;

### enum hb_direction_t

#### Members

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. |

### hb_language_t

    typedef const struct hb_language_impl_t *hb_language_t;

### hb_mask_t

    typedef uint32_t hb_mask_t;

### hb_position_t

    typedef int32_t hb_position_t;

### hb_tag_t

    typedef uint32_t hb_tag_t;

### enum hb_script_t

#### Members

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_INVALID |  |
_HB_SCRIPT_MAX_VALUE |  |
_HB_SCRIPT_MAX_VALUE_SIGNED |  |

### hb_user_data_key_t

    typedef struct {
    } hb_user_data_key_t;

### hb_var_int_t

### HB_TAG_NONE

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

### HB_TAG_MAX

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

### HB_TAG_MAX_SIGNED

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