## hb-unicode

hb-unicode — Unicode character property access

## Functions

hb_unicode_combining_class_t | hb_unicode_combining_class ()
hb_unicode_combining_class_t | (*hb_unicode_combining_class_func_t) ()
hb_bool_t | hb_unicode_compose ()
hb_bool_t | (*hb_unicode_compose_func_t) ()
hb_bool_t | hb_unicode_decompose ()
hb_bool_t | (*hb_unicode_decompose_func_t) ()
hb_unicode_funcs_t * | hb_unicode_funcs_create ()
void | hb_unicode_funcs_destroy ()
hb_unicode_funcs_t * | hb_unicode_funcs_get_default ()
hb_unicode_funcs_t * | hb_unicode_funcs_get_empty ()
hb_unicode_funcs_t * | hb_unicode_funcs_get_parent ()
void * | hb_unicode_funcs_get_user_data ()
hb_bool_t | hb_unicode_funcs_is_immutable ()
void | hb_unicode_funcs_make_immutable ()
hb_unicode_funcs_t * | hb_unicode_funcs_reference ()
void | hb_unicode_funcs_set_combining_class_func ()
void | hb_unicode_funcs_set_compose_func ()
void | hb_unicode_funcs_set_decompose_func ()
void | hb_unicode_funcs_set_general_category_func ()
void | hb_unicode_funcs_set_mirroring_func ()
void | hb_unicode_funcs_set_script_func ()
hb_bool_t | hb_unicode_funcs_set_user_data ()
hb_unicode_general_category_t | hb_unicode_general_category ()
hb_unicode_general_category_t | (*hb_unicode_general_category_func_t) ()
hb_codepoint_t | hb_unicode_mirroring ()
hb_codepoint_t | (*hb_unicode_mirroring_func_t) ()
hb_script_t | hb_unicode_script ()
hb_script_t | (*hb_unicode_script_func_t) ()

## Types and Values

#define | HB_UNICODE_MAX
enum | hb_unicode_combining_class_t
typedef | hb_unicode_funcs_t
enum | hb_unicode_general_category_t

## Includes

    #include <hb.h>

## Description

Unicode functions are used to access Unicode character properties. Client can pass its own Unicode functions to HarfBuzz, or access the built-in Unicode functions that come with HarfBuzz.

With the Unicode functions, one can query variour Unicode character properties, such as General Category, Script, Combining Class, etc.

## Functions

### hb_unicode_combining_class ()

    hb_unicode_combining_class_t
    hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs,
                                hb_codepoint_t unicode);

Since: 0.9.2

### hb_unicode_combining_class_func_t ()

    hb_unicode_combining_class_t
    (*hb_unicode_combining_class_func_t) (hb_unicode_funcs_t *ufuncs,
                                          hb_codepoint_t unicode,
                                          void *user_data);

### hb_unicode_compose ()

    hb_bool_t
    hb_unicode_compose (hb_unicode_funcs_t *ufuncs,
                        hb_codepoint_t a,
                        hb_codepoint_t b,
                        hb_codepoint_t *ab);

#### Parameters

ufuncs | Unicode functions. |
ab | . | [out]

Since: 0.9.2

### hb_unicode_compose_func_t ()

    hb_bool_t
    (*hb_unicode_compose_func_t) (hb_unicode_funcs_t *ufuncs,
                                  hb_codepoint_t a,
                                  hb_codepoint_t b,
                                  hb_codepoint_t *ab,
                                  void *user_data);

### hb_unicode_decompose ()

    hb_bool_t
    hb_unicode_decompose (hb_unicode_funcs_t *ufuncs,
                          hb_codepoint_t ab,
                          hb_codepoint_t *a,
                          hb_codepoint_t *b);

#### Parameters

ufuncs | Unicode functions. |
a | . | [out]
b | . | [out]

Since: 0.9.2

### hb_unicode_decompose_func_t ()

    hb_bool_t
    (*hb_unicode_decompose_func_t) (hb_unicode_funcs_t *ufuncs,
                                    hb_codepoint_t ab,
                                    hb_codepoint_t *a,
                                    hb_codepoint_t *b,
                                    void *user_data);

### hb_unicode_funcs_create ()

    hb_unicode_funcs_t *
    hb_unicode_funcs_create (hb_unicode_funcs_t *parent);

[Xconstructor]

#### Parameters

parent | . | [nullable]

#### Returns

.

[transfer full]

Since: 0.9.2

### hb_unicode_funcs_destroy ()

    void
    hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs);

[skip]

#### Parameters

ufuncs | Unicode functions. |

Since: 0.9.2

### hb_unicode_funcs_get_default ()

    hb_unicode_funcs_t *
    hb_unicode_funcs_get_default (void);

### hb_unicode_funcs_get_empty ()

    hb_unicode_funcs_t *
    hb_unicode_funcs_get_empty (void);

#### Returns

.

[transfer full]

Since: 0.9.2

### hb_unicode_funcs_get_parent ()

    hb_unicode_funcs_t *
    hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs);

#### Parameters

ufuncs | Unicode functions. |

Since: 0.9.2

### hb_unicode_funcs_get_user_data ()

    void *
    hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs,
                                    hb_user_data_key_t *key);

[skip]

#### Parameters

ufuncs | Unicode functions. |

#### Returns

.

[transfer none]

Since: 0.9.2

### hb_unicode_funcs_is_immutable ()

    hb_bool_t
    hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs);

#### Parameters

ufuncs | Unicode functions. |

Since: 0.9.2

### hb_unicode_funcs_make_immutable ()

    void
    hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs);

#### Parameters

ufuncs | Unicode functions. |

Since: 0.9.2

### hb_unicode_funcs_reference ()

    hb_unicode_funcs_t *
    hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs);

[skip]

#### Parameters

ufuncs | Unicode functions. |

#### Returns

.

[transfer full]

Since: 0.9.2

### hb_unicode_funcs_set_combining_class_func ()

    void
    hb_unicode_funcs_set_combining_class_func
                                   (hb_unicode_funcs_t *ufuncs,
                                    hb_unicode_combining_class_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ufuncs | a Unicode function structure |
func | . | [closure user_data][destroy destroy][scope notified]

Since: 0.9.2

### hb_unicode_funcs_set_compose_func ()

    void
    hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs,
                                       hb_unicode_compose_func_t func,
                                       void *user_data,
                                       hb_destroy_func_t destroy);

#### Parameters

ufuncs | a Unicode function structure |
func | . | [closure user_data][destroy destroy][scope notified]

Since: 0.9.2

### hb_unicode_funcs_set_decompose_func ()

    void
    hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs,
                                         hb_unicode_decompose_func_t func,
                                         void *user_data,
                                         hb_destroy_func_t destroy);

#### Parameters

ufuncs | a Unicode function structure |
func | . | [closure user_data][destroy destroy][scope notified]

Since: 0.9.2

### hb_unicode_funcs_set_general_category_func ()

    void
    hb_unicode_funcs_set_general_category_func
                                   (hb_unicode_funcs_t *ufuncs,
                                    hb_unicode_general_category_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ufuncs | a Unicode function structure |
func | . | [closure user_data][destroy destroy][scope notified]

Since: 0.9.2

### hb_unicode_funcs_set_mirroring_func ()

    void
    hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs,
                                         hb_unicode_mirroring_func_t func,
                                         void *user_data,
                                         hb_destroy_func_t destroy);

#### Parameters

ufuncs | a Unicode function structure |
func | . | [closure user_data][destroy destroy][scope notified]

Since: 0.9.2

### hb_unicode_funcs_set_script_func ()

    void
    hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs,
                                      hb_unicode_script_func_t func,
                                      void *user_data,
                                      hb_destroy_func_t destroy);

#### Parameters

ufuncs | a Unicode function structure |
func | . | [closure user_data][destroy destroy][scope notified]

Since: 0.9.2

### hb_unicode_funcs_set_user_data ()

    hb_bool_t
    hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs,
                                    hb_user_data_key_t *key,
                                    void *data,
                                    hb_destroy_func_t destroy,
                                    hb_bool_t replace);

[skip]

#### Parameters

ufuncs | Unicode functions. |

Since: 0.9.2

### hb_unicode_general_category ()

    hb_unicode_general_category_t
    hb_unicode_general_category (hb_unicode_funcs_t *ufuncs,
                                 hb_codepoint_t unicode);

Since: 0.9.2

### hb_unicode_general_category_func_t ()

    hb_unicode_general_category_t
    (*hb_unicode_general_category_func_t) (hb_unicode_funcs_t *ufuncs,
                                           hb_codepoint_t unicode,
                                           void *user_data);

### hb_unicode_mirroring ()

    hb_codepoint_t
    hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs,
                          hb_codepoint_t unicode);

Since: 0.9.2

### hb_unicode_mirroring_func_t ()

    hb_codepoint_t
    (*hb_unicode_mirroring_func_t) (hb_unicode_funcs_t *ufuncs,
                                    hb_codepoint_t unicode,
                                    void *user_data);

### hb_unicode_script ()

    hb_script_t
    hb_unicode_script (hb_unicode_funcs_t *ufuncs,
                       hb_codepoint_t unicode);

Since: 0.9.2

### hb_unicode_script_func_t ()

    hb_script_t
    (*hb_unicode_script_func_t) (hb_unicode_funcs_t *ufuncs,
                                 hb_codepoint_t unicode,
                                 void *user_data);

## Types and Values

### HB_UNICODE_MAX

    #define HB_UNICODE_MAX 0x10FFFFu

Since: 1.9.0

### enum hb_unicode_combining_class_t

#### Members

HB_UNICODE_COMBINING_CLASS_NOT_REORDERED |  |
HB_UNICODE_COMBINING_CLASS_OVERLAY |  |
HB_UNICODE_COMBINING_CLASS_NUKTA |  |
HB_UNICODE_COMBINING_CLASS_KANA_VOICING |  |
HB_UNICODE_COMBINING_CLASS_VIRAMA |  |
HB_UNICODE_COMBINING_CLASS_CCC10 |  |
HB_UNICODE_COMBINING_CLASS_CCC11 |  |
HB_UNICODE_COMBINING_CLASS_CCC12 |  |
HB_UNICODE_COMBINING_CLASS_CCC13 |  |
HB_UNICODE_COMBINING_CLASS_CCC14 |  |
HB_UNICODE_COMBINING_CLASS_CCC15 |  |
HB_UNICODE_COMBINING_CLASS_CCC16 |  |
HB_UNICODE_COMBINING_CLASS_CCC17 |  |
HB_UNICODE_COMBINING_CLASS_CCC18 |  |
HB_UNICODE_COMBINING_CLASS_CCC19 |  |
HB_UNICODE_COMBINING_CLASS_CCC20 |  |
HB_UNICODE_COMBINING_CLASS_CCC21 |  |
HB_UNICODE_COMBINING_CLASS_CCC22 |  |
HB_UNICODE_COMBINING_CLASS_CCC23 |  |
HB_UNICODE_COMBINING_CLASS_CCC24 |  |
HB_UNICODE_COMBINING_CLASS_CCC25 |  |
HB_UNICODE_COMBINING_CLASS_CCC26 |  |
HB_UNICODE_COMBINING_CLASS_CCC27 |  |
HB_UNICODE_COMBINING_CLASS_CCC28 |  |
HB_UNICODE_COMBINING_CLASS_CCC29 |  |
HB_UNICODE_COMBINING_CLASS_CCC30 |  |
HB_UNICODE_COMBINING_CLASS_CCC31 |  |
HB_UNICODE_COMBINING_CLASS_CCC32 |  |
HB_UNICODE_COMBINING_CLASS_CCC33 |  |
HB_UNICODE_COMBINING_CLASS_CCC34 |  |
HB_UNICODE_COMBINING_CLASS_CCC35 |  |
HB_UNICODE_COMBINING_CLASS_CCC36 |  |
HB_UNICODE_COMBINING_CLASS_CCC84 |  |
HB_UNICODE_COMBINING_CLASS_CCC91 |  |
HB_UNICODE_COMBINING_CLASS_CCC103 |  |
HB_UNICODE_COMBINING_CLASS_CCC107 |  |
HB_UNICODE_COMBINING_CLASS_CCC118 |  |
HB_UNICODE_COMBINING_CLASS_CCC122 |  |
HB_UNICODE_COMBINING_CLASS_CCC129 |  |
HB_UNICODE_COMBINING_CLASS_CCC130 |  |
HB_UNICODE_COMBINING_CLASS_CCC133 |  |
HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT |  |
HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW |  |
HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE |  |
HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT |  |
HB_UNICODE_COMBINING_CLASS_BELOW_LEFT |  |
HB_UNICODE_COMBINING_CLASS_BELOW |  |
HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT |  |
HB_UNICODE_COMBINING_CLASS_LEFT |  |
HB_UNICODE_COMBINING_CLASS_RIGHT |  |
HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT |  |
HB_UNICODE_COMBINING_CLASS_ABOVE |  |
HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT |  |
HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW |  |
HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE |  |
HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT |  |
HB_UNICODE_COMBINING_CLASS_INVALID |  |

### hb_unicode_funcs_t

    typedef struct hb_unicode_funcs_t hb_unicode_funcs_t;

### enum hb_unicode_general_category_t

#### Members

HB_UNICODE_GENERAL_CATEGORY_CONTROL |  |
HB_UNICODE_GENERAL_CATEGORY_FORMAT |  |
HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED |  |
HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE |  |
HB_UNICODE_GENERAL_CATEGORY_SURROGATE |  |
HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER |  |
HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER |  |
HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER |  |
HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER |  |
HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER |  |
HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK |  |
HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK |  |
HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK |  |
HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER |  |
HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER |  |
HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER |  |
HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION |  |
HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION |  |
HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION |  |
HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION |  |
HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION |  |
HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION |  |
HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION |  |
HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL |  |
HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL |  |
HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL |  |
HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL |  |
HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR |  |
HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR |  |
HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR |  |