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

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

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

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

## 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_BASSA_VAH |  |
HB_SCRIPT_ADLAM |  |
HB_SCRIPT_MASARAM_GONDI |  |
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)