## hb-font

hb-font

## Functions

void | hb_font_add_glyph_origin_for_direction ()
hb_font_t * | hb_font_create ()
hb_font_t * | hb_font_create_sub_font ()
void | hb_font_destroy ()
hb_font_funcs_t * | hb_font_funcs_create ()
void | hb_font_funcs_destroy ()
hb_font_funcs_t * | hb_font_funcs_get_empty ()
void * | hb_font_funcs_get_user_data ()
hb_bool_t | hb_font_funcs_is_immutable ()
void | hb_font_funcs_make_immutable ()
hb_font_funcs_t * | hb_font_funcs_reference ()
void | hb_font_funcs_set_glyph_contour_point_func ()
void | hb_font_funcs_set_glyph_extents_func ()
void | hb_font_funcs_set_glyph_from_name_func ()
void | hb_font_funcs_set_glyph_func ()
void | hb_font_funcs_set_glyph_h_advance_func ()
void | hb_font_funcs_set_glyph_h_kerning_func ()
void | hb_font_funcs_set_glyph_h_origin_func ()
void | hb_font_funcs_set_glyph_name_func ()
void | hb_font_funcs_set_glyph_v_advance_func ()
void | hb_font_funcs_set_glyph_v_kerning_func ()
void | hb_font_funcs_set_glyph_v_origin_func ()
hb_bool_t | hb_font_funcs_set_user_data ()
hb_font_t * | hb_font_get_empty ()
hb_face_t * | hb_font_get_face ()
hb_bool_t | hb_font_get_glyph ()
void | hb_font_get_glyph_advance_for_direction ()
hb_position_t | (*hb_font_get_glyph_advance_func_t) ()
hb_bool_t | hb_font_get_glyph_contour_point ()
hb_bool_t | hb_font_get_glyph_contour_point_for_origin ()
hb_bool_t | (*hb_font_get_glyph_contour_point_func_t) ()
hb_bool_t | hb_font_get_glyph_extents ()
hb_bool_t | hb_font_get_glyph_extents_for_origin ()
hb_bool_t | (*hb_font_get_glyph_extents_func_t) ()
hb_bool_t | hb_font_get_glyph_from_name ()
hb_bool_t | (*hb_font_get_glyph_from_name_func_t) ()
hb_bool_t | (*hb_font_get_glyph_func_t) ()
hb_position_t | hb_font_get_glyph_h_advance ()
hb_position_t | hb_font_get_glyph_h_kerning ()
hb_bool_t | hb_font_get_glyph_h_origin ()
void | hb_font_get_glyph_kerning_for_direction ()
hb_position_t | (*hb_font_get_glyph_kerning_func_t) ()
hb_bool_t | hb_font_get_glyph_name ()
hb_bool_t | (*hb_font_get_glyph_name_func_t) ()
void | hb_font_get_glyph_origin_for_direction ()
hb_bool_t | (*hb_font_get_glyph_origin_func_t) ()
hb_position_t | hb_font_get_glyph_v_advance ()
hb_position_t | hb_font_get_glyph_v_kerning ()
hb_bool_t | hb_font_get_glyph_v_origin ()
hb_font_t * | hb_font_get_parent ()
void | hb_font_get_ppem ()
void | hb_font_get_scale ()
void * | hb_font_get_user_data ()
hb_bool_t | hb_font_glyph_from_string ()
void | hb_font_glyph_to_string ()
hb_bool_t | hb_font_is_immutable ()
void | hb_font_make_immutable ()
hb_font_t * | hb_font_reference ()
void | hb_font_set_funcs ()
void | hb_font_set_funcs_data ()
void | hb_font_set_ppem ()
void | hb_font_set_scale ()
hb_bool_t | hb_font_set_user_data ()
void | hb_font_subtract_glyph_origin_for_direction ()
hb_blob_t * | (*hb_reference_table_func_t) ()

## Types and Values

typedef | hb_font_funcs_t
typedef | hb_font_get_glyph_h_advance_func_t
typedef | hb_font_get_glyph_h_kerning_func_t
typedef | hb_font_get_glyph_h_origin_func_t
typedef | hb_font_get_glyph_v_advance_func_t
typedef | hb_font_get_glyph_v_kerning_func_t
typedef | hb_font_get_glyph_v_origin_func_t
typedef | hb_font_t

## Object Hierarchy

        GBoxed
        ├── hb_font_funcs_t
        ╰── hb_font_t

## Description

## Functions

### hb_font_add_glyph_origin_for_direction ()

    void
    hb_font_add_glyph_origin_for_direction
                                   (hb_font_t *font,
                                    hb_codepoint_t glyph,
                                    hb_direction_t direction,
                                    hb_position_t *x,
                                    hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

Since 1.0

### hb_font_create ()

    hb_font_t *
    hb_font_create (hb_face_t *face);

#### Returns

### hb_font_create_sub_font ()

    hb_font_t *
    hb_font_create_sub_font (hb_font_t *parent);

#### Parameters

parent | parent font. |

#### Returns

.

[transfer full]

Since 1.0

### hb_font_destroy ()

    void
    hb_font_destroy (hb_font_t *font);

#### Parameters

font | a font. |

Since 1.0

### hb_font_funcs_create ()

    hb_font_funcs_t *
    hb_font_funcs_create (void);

#### Returns

### hb_font_funcs_destroy ()

    void
    hb_font_funcs_destroy (hb_font_funcs_t *ffuncs);

#### Parameters

ffuncs | font functions. |

Since 1.0

### hb_font_funcs_get_empty ()

    hb_font_funcs_t *
    hb_font_funcs_get_empty (void);

#### Returns

.

[transfer full]

Since 1.0

### hb_font_funcs_get_user_data ()

    void *
    hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs,
                                 hb_user_data_key_t *key);

#### Parameters

ffuncs | font functions. |

#### Returns

.

[transfer none]

Since 1.0

### hb_font_funcs_is_immutable ()

    hb_bool_t
    hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);

#### Parameters

ffuncs | font functions. |

#### Returns

Since 1.0

### hb_font_funcs_make_immutable ()

    void
    hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs);

#### Parameters

ffuncs | font functions. |

Since 1.0

### hb_font_funcs_reference ()

    hb_font_funcs_t *
    hb_font_funcs_reference (hb_font_funcs_t *ffuncs);

#### Parameters

ffuncs | font functions. |

#### Returns

Since 1.0

### hb_font_funcs_set_glyph_contour_point_func ()

    void
    hb_font_funcs_set_glyph_contour_point_func
                                   (hb_font_funcs_t *ffuncs,
                                    hb_font_get_glyph_contour_point_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_glyph_extents_func ()

    void
    hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
                                          hb_font_get_glyph_extents_func_t func,
                                          void *user_data,
                                          hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_glyph_from_name_func ()

    void
    hb_font_funcs_set_glyph_from_name_func
                                   (hb_font_funcs_t *ffuncs,
                                    hb_font_get_glyph_from_name_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |

Since 1.0

### hb_font_funcs_set_glyph_func ()

    void
    hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs,
                                  hb_font_get_glyph_func_t func,
                                  void *user_data,
                                  hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |

Since 1.0

### hb_font_funcs_set_glyph_h_advance_func ()

    void
    hb_font_funcs_set_glyph_h_advance_func
                                   (hb_font_funcs_t *ffuncs,
                                    hb_font_get_glyph_h_advance_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_glyph_h_kerning_func ()

    void
    hb_font_funcs_set_glyph_h_kerning_func
                                   (hb_font_funcs_t *ffuncs,
                                    hb_font_get_glyph_h_kerning_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_glyph_h_origin_func ()

    void
    hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
                                           hb_font_get_glyph_h_origin_func_t func,
                                           void *user_data,
                                           hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_glyph_name_func ()

    void
    hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
                                       hb_font_get_glyph_name_func_t func,
                                       void *user_data,
                                       hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |

Since 1.0

### hb_font_funcs_set_glyph_v_advance_func ()

    void
    hb_font_funcs_set_glyph_v_advance_func
                                   (hb_font_funcs_t *ffuncs,
                                    hb_font_get_glyph_v_advance_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_glyph_v_kerning_func ()

    void
    hb_font_funcs_set_glyph_v_kerning_func
                                   (hb_font_funcs_t *ffuncs,
                                    hb_font_get_glyph_v_kerning_func_t func,
                                    void *user_data,
                                    hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_glyph_v_origin_func ()

    void
    hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs,
                                           hb_font_get_glyph_v_origin_func_t func,
                                           void *user_data,
                                           hb_destroy_func_t destroy);

#### Parameters

ffuncs | font functions. |
func | . | [closure user_data][destroy destroy][scope notified]

Since 1.0

### hb_font_funcs_set_user_data ()

    hb_bool_t
    hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs,
                                 hb_user_data_key_t *key,
                                 void *data,
                                 hb_destroy_func_t destroy,
                                 hb_bool_t replace);

#### Parameters

ffuncs | font functions. |

#### Returns

Since 1.0

### hb_font_get_empty ()

    hb_font_t *
    hb_font_get_empty (void);

#### Returns

(transfer full)

Since 1.0

### hb_font_get_face ()

    hb_face_t *
    hb_font_get_face (hb_font_t *font);

#### Parameters

font | a font. |

#### Returns

.

[transfer none]

Since 1.0

### hb_font_get_glyph ()

    hb_bool_t
    hb_font_get_glyph (hb_font_t *font,
                       hb_codepoint_t unicode,
                       hb_codepoint_t variation_selector,
                       hb_codepoint_t *glyph);

#### Parameters

font | a font. |
glyph | . | [out]

#### Returns

Since 1.0

### hb_font_get_glyph_advance_for_direction ()

    void
    hb_font_get_glyph_advance_for_direction
                                   (hb_font_t *font,
                                    hb_codepoint_t glyph,
                                    hb_direction_t direction,
                                    hb_position_t *x,
                                    hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

Since 1.0

### hb_font_get_glyph_advance_func_t ()

    hb_position_t
    (*hb_font_get_glyph_advance_func_t) (hb_font_t *font,
                                         void *font_data,
                                         hb_codepoint_t glyph,
                                         void *user_data);

#### Returns

### hb_font_get_glyph_contour_point ()

    hb_bool_t
    hb_font_get_glyph_contour_point (hb_font_t *font,
                                     hb_codepoint_t glyph,
                                     unsigned int point_index,
                                     hb_position_t *x,
                                     hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

#### Returns

Since 1.0

### hb_font_get_glyph_contour_point_for_origin ()

    hb_bool_t
    hb_font_get_glyph_contour_point_for_origin
                                   (hb_font_t *font,
                                    hb_codepoint_t glyph,
                                    unsigned int point_index,
                                    hb_direction_t direction,
                                    hb_position_t *x,
                                    hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

#### Returns

Since 1.0

### hb_font_get_glyph_contour_point_func_t ()

    hb_bool_t
    (*hb_font_get_glyph_contour_point_func_t)
                                   (hb_font_t *font,
                                    void *font_data,
                                    hb_codepoint_t glyph,
                                    unsigned int point_index,
                                    hb_position_t *x,
                                    hb_position_t *y,
                                    void *user_data);

#### Returns

### hb_font_get_glyph_extents ()

    hb_bool_t
    hb_font_get_glyph_extents (hb_font_t *font,
                               hb_codepoint_t glyph,
                               hb_glyph_extents_t *extents);

#### Parameters

font | a font. |
extents | . | [out]

#### Returns

Since 1.0

### hb_font_get_glyph_extents_for_origin ()

    hb_bool_t
    hb_font_get_glyph_extents_for_origin (hb_font_t *font,
                                          hb_codepoint_t glyph,
                                          hb_direction_t direction,
                                          hb_glyph_extents_t *extents);

#### Parameters

font | a font. |
extents | . | [out]

#### Returns

Since 1.0

### hb_font_get_glyph_extents_func_t ()

    hb_bool_t
    (*hb_font_get_glyph_extents_func_t) (hb_font_t *font,
                                         void *font_data,
                                         hb_codepoint_t glyph,
                                         hb_glyph_extents_t *extents,
                                         void *user_data);

#### Returns

### hb_font_get_glyph_from_name ()

    hb_bool_t
    hb_font_get_glyph_from_name (hb_font_t *font,
                                 const char *name,
                                 int len,
                                 hb_codepoint_t *glyph);

#### Parameters

font | a font. |
name | . | [array length=len]
glyph | . | [out]

#### Returns

Since 1.0

### hb_font_get_glyph_from_name_func_t ()

    hb_bool_t
    (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font,
                                           void *font_data,
                                           const char *name,
                                           int len);

#### Returns

### hb_font_get_glyph_func_t ()

    hb_bool_t
    (*hb_font_get_glyph_func_t) (hb_font_t *font,
                                 void *font_data,
                                 hb_codepoint_t unicode,
                                 hb_codepoint_t variation_selector,
                                 hb_codepoint_t *glyph,
                                 void *user_data);

#### Returns

### hb_font_get_glyph_h_advance ()

    hb_position_t
    hb_font_get_glyph_h_advance (hb_font_t *font,
                                 hb_codepoint_t glyph);

#### Parameters

font | a font. |

#### Returns

Since 1.0

### hb_font_get_glyph_h_kerning ()

    hb_position_t
    hb_font_get_glyph_h_kerning (hb_font_t *font,
                                 hb_codepoint_t left_glyph,
                                 hb_codepoint_t right_glyph);

#### Parameters

font | a font. |

#### Returns

Since 1.0

### hb_font_get_glyph_h_origin ()

    hb_bool_t
    hb_font_get_glyph_h_origin (hb_font_t *font,
                                hb_codepoint_t glyph,
                                hb_position_t *x,
                                hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

#### Returns

Since 1.0

### hb_font_get_glyph_kerning_for_direction ()

    void
    hb_font_get_glyph_kerning_for_direction
                                   (hb_font_t *font,
                                    hb_codepoint_t first_glyph,
                                    hb_codepoint_t second_glyph,
                                    hb_direction_t direction,
                                    hb_position_t *x,
                                    hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

Since 1.0

### hb_font_get_glyph_kerning_func_t ()

    hb_position_t
    (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font,
                                         void *font_data,
                                         hb_codepoint_t first_glyph,
                                         hb_codepoint_t second_glyph,
                                         void *user_data);

#### Returns

### hb_font_get_glyph_name ()

    hb_bool_t
    hb_font_get_glyph_name (hb_font_t *font,
                            hb_codepoint_t glyph,
                            char *name,
                            unsigned int size);

#### Parameters

font | a font. |
name | . | [array length=size]

#### Returns

Since 1.0

### hb_font_get_glyph_name_func_t ()

    hb_bool_t
    (*hb_font_get_glyph_name_func_t) (hb_font_t *font,
                                      void *font_data,
                                      hb_codepoint_t glyph,
                                      char *name,
                                      unsigned int size,
                                      void *user_data);

#### Returns

### hb_font_get_glyph_origin_for_direction ()

    void
    hb_font_get_glyph_origin_for_direction
                                   (hb_font_t *font,
                                    hb_codepoint_t glyph,
                                    hb_direction_t direction,
                                    hb_position_t *x,
                                    hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

Since 1.0

### hb_font_get_glyph_origin_func_t ()

    hb_bool_t
    (*hb_font_get_glyph_origin_func_t) (hb_font_t *font,
                                        void *font_data,
                                        hb_codepoint_t glyph,
                                        hb_position_t *x,
                                        hb_position_t *y,
                                        void *user_data);

#### Returns

### hb_font_get_glyph_v_advance ()

    hb_position_t
    hb_font_get_glyph_v_advance (hb_font_t *font,
                                 hb_codepoint_t glyph);

#### Parameters

font | a font. |

#### Returns

Since 1.0

### hb_font_get_glyph_v_kerning ()

    hb_position_t
    hb_font_get_glyph_v_kerning (hb_font_t *font,
                                 hb_codepoint_t top_glyph,
                                 hb_codepoint_t bottom_glyph);

#### Parameters

font | a font. |

#### Returns

Since 1.0

### hb_font_get_glyph_v_origin ()

    hb_bool_t
    hb_font_get_glyph_v_origin (hb_font_t *font,
                                hb_codepoint_t glyph,
                                hb_position_t *x,
                                hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

#### Returns

Since 1.0

### hb_font_get_parent ()

    hb_font_t *
    hb_font_get_parent (hb_font_t *font);

#### Parameters

font | a font. |

#### Returns

.

[transfer none]

Since 1.0

### hb_font_get_ppem ()

    void
    hb_font_get_ppem (hb_font_t *font,
                      unsigned int *x_ppem,
                      unsigned int *y_ppem);

#### Parameters

font | a font. |
x_ppem | . | [out]
y_ppem | . | [out]

Since 1.0

### hb_font_get_scale ()

    void
    hb_font_get_scale (hb_font_t *font,
                       int *x_scale,
                       int *y_scale);

#### Parameters

font | a font. |
x_scale | . | [out]
y_scale | . | [out]

Since 1.0

### hb_font_get_user_data ()

    void *
    hb_font_get_user_data (hb_font_t *font,
                           hb_user_data_key_t *key);

#### Parameters

font | a font. |

#### Returns

.

[transfer none]

Since 1.0

### hb_font_glyph_from_string ()

    hb_bool_t
    hb_font_glyph_from_string (hb_font_t *font,
                               const char *s,
                               int len,
                               hb_codepoint_t *glyph);

#### Parameters

font | a font. |
s | . | [array length=len]
glyph | . | [out]

#### Returns

Since 1.0

### hb_font_glyph_to_string ()

    void
    hb_font_glyph_to_string (hb_font_t *font,
                             hb_codepoint_t glyph,
                             char *s,
                             unsigned int size);

#### Parameters

font | a font. |
s | . | [array length=size]

Since 1.0

### hb_font_is_immutable ()

    hb_bool_t
    hb_font_is_immutable (hb_font_t *font);

#### Parameters

font | a font. |

#### Returns

Since 1.0

### hb_font_make_immutable ()

    void
    hb_font_make_immutable (hb_font_t *font);

#### Parameters

font | a font. |

Since 1.0

### hb_font_reference ()

    hb_font_t *
    hb_font_reference (hb_font_t *font);

#### Parameters

font | a font. |

#### Returns

.

[transfer full]

Since 1.0

### hb_font_set_funcs ()

    void
    hb_font_set_funcs (hb_font_t *font,
                       hb_font_funcs_t *klass,
                       void *font_data,
                       hb_destroy_func_t destroy);

#### Parameters

font | a font. |
klass | . | [closure font_data][destroy destroy][scope notified]

Since 1.0

### hb_font_set_funcs_data ()

    void
    hb_font_set_funcs_data (hb_font_t *font,
                            void *font_data,
                            hb_destroy_func_t destroy);

#### Parameters

font | a font. |
font_data | . | [destroy destroy][scope notified]

Since 1.0

### hb_font_set_ppem ()

    void
    hb_font_set_ppem (hb_font_t *font,
                      unsigned int x_ppem,
                      unsigned int y_ppem);

#### Parameters

font | a font. |

Since 1.0

### hb_font_set_scale ()

    void
    hb_font_set_scale (hb_font_t *font,
                       int x_scale,
                       int y_scale);

#### Parameters

font | a font. |

Since 1.0

### hb_font_set_user_data ()

    hb_bool_t
    hb_font_set_user_data (hb_font_t *font,
                           hb_user_data_key_t *key,
                           void *data,
                           hb_destroy_func_t destroy,
                           hb_bool_t replace);

#### Parameters

font | a font. |

#### Returns

Since 1.0

### hb_font_subtract_glyph_origin_for_direction ()

    void
    hb_font_subtract_glyph_origin_for_direction
                                   (hb_font_t *font,
                                    hb_codepoint_t glyph,
                                    hb_direction_t direction,
                                    hb_position_t *x,
                                    hb_position_t *y);

#### Parameters

font | a font. |
x | . | [out]
y | . | [out]

Since 1.0

### hb_reference_table_func_t ()

    hb_blob_t *
    (*hb_reference_table_func_t) (hb_face_t *face,
                                  hb_tag_t tag,
                                  void *user_data);

#### Returns

## Types and Values

### hb_font_funcs_t

    typedef struct hb_font_funcs_t hb_font_funcs_t;

### hb_font_get_glyph_h_advance_func_t

    typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t;

### hb_font_get_glyph_h_kerning_func_t

    typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;

### hb_font_get_glyph_h_origin_func_t

    typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t;

### hb_font_get_glyph_v_advance_func_t

    typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t;

### hb_font_get_glyph_v_kerning_func_t

    typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t;

### hb_font_get_glyph_v_origin_func_t

    typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t;

### hb_font_t

    typedef struct hb_font_t hb_font_t;