## hb-common hb-common — Common data types |

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

## 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
#define | HB_LANGUAGE_INVALID

## Object Hierarchy

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

## Includes

    #include <hb.h>

## Description

Common data types used across HarfBuzz are defined here.

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

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]

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

Since: 0.9.2

### hb_language_from_string ()

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

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

#### Parameters

str | a string representing a BCP 47 language tag. | [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 BCP 47 language tag.

[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);

Get default language from current locale.

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.

#### 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)((((uint32_t)(c1)&0xFF)<<24)|(((uint32_t)(c2)&0xFF)<<16)|(((uint32_t)(c3)&0xFF)<<8)|((uint32_t)(c4)&0xFF)))

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

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

### HB_LANGUAGE_INVALID

    #define HB_LANGUAGE_INVALID ((hb_language_t) 0)