## hb-face hb-face — Font face objects |

## Functions

unsigned int | hb_face_count ()
hb_face_t * | hb_face_create ()
hb_face_t * | hb_face_create_for_tables ()
void | hb_face_destroy ()
hb_face_t * | hb_face_get_empty ()
unsigned int | hb_face_get_table_tags ()
unsigned int | hb_face_get_glyph_count ()
unsigned int | hb_face_get_index ()
unsigned int | hb_face_get_upem ()
void * | hb_face_get_user_data ()
hb_bool_t | hb_face_is_immutable ()
void | hb_face_make_immutable ()
hb_face_t * | hb_face_reference ()
hb_blob_t * | hb_face_reference_blob ()
hb_blob_t * | hb_face_reference_table ()
void | hb_face_set_glyph_count ()
void | hb_face_set_index ()
void | hb_face_set_upem ()
hb_bool_t | hb_face_set_user_data ()
void | hb_face_collect_unicodes ()
void | hb_face_collect_variation_selectors ()
void | hb_face_collect_variation_unicodes ()
hb_face_t * | hb_face_builder_create ()
hb_bool_t | hb_face_builder_add_table ()

## Types and Values

typedef | hb_face_t

## Includes

    #include <hb.h>

## Description

Font face is objects represent a single face in a font family. More exactly, a font face represents a single face in a binary font file. Font faces are typically built from a binary blob and a face index. Font faces are used to create fonts.

## Functions

### hb_face_count ()

    unsigned int
    hb_face_count (hb_blob_t *blob);

Get number of faces in a blob.

#### Parameters

blob | a blob. |

#### Returns

Number of faces in `blob`

Since: 1.7.7

### hb_face_create ()

    hb_face_t *
    hb_face_create (hb_blob_t *blob,
                    unsigned int index);

[Xconstructor]

#### Returns

.

[transfer full]

Since: 0.9.2

### hb_face_create_for_tables ()

    hb_face_t *
    hb_face_create_for_tables (hb_reference_table_func_t reference_table_func,
                               void *user_data,
                               hb_destroy_func_t destroy);

#### Parameters

reference_table_func | . | [closure user_data][destroy destroy][scope notified]

#### Returns

(transfer full)

Since: 0.9.2

### hb_face_destroy ()

    void
    hb_face_destroy (hb_face_t *face);

[skip]

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_get_empty ()

    hb_face_t *
    hb_face_get_empty (void);

#### Returns

(transfer full)

Since: 0.9.2

### hb_face_get_table_tags ()

    unsigned int
    hb_face_get_table_tags (const hb_face_t *face,
                            unsigned int start_offset,
                            unsigned int *table_count,
                            hb_tag_t *table_tags);

Retrieves table tags for a face, if possible.

#### Parameters

face | a face. |
start_offset | index of first tag to return. |
table_count | input length of `table_tags` array, output number of items written. |
table_tags | array to write tags into. |

#### Returns

total number of tables, or 0 if not possible to list.

Since: 1.6.0

### hb_face_get_glyph_count ()

    unsigned int
    hb_face_get_glyph_count (const hb_face_t *face);

#### Parameters

face | a face. |

Since: 0.9.7

### hb_face_get_index ()

    unsigned int
    hb_face_get_index (const hb_face_t *face);

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_get_upem ()

    unsigned int
    hb_face_get_upem (const hb_face_t *face);

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_get_user_data ()

    void *
    hb_face_get_user_data (const hb_face_t *face,
                           hb_user_data_key_t *key);

[skip]

#### Parameters

face | a face. |

#### Returns

.

[transfer none]

Since: 0.9.2

### hb_face_is_immutable ()

    hb_bool_t
    hb_face_is_immutable (const hb_face_t *face);

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_make_immutable ()

    void
    hb_face_make_immutable (hb_face_t *face);

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_reference ()

    hb_face_t *
    hb_face_reference (hb_face_t *face);

[skip]

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_reference_blob ()

    hb_blob_t *
    hb_face_reference_blob (hb_face_t *face);

#### Parameters

face | a face. |

#### Returns

.

[transfer full]

Since: 0.9.2

### hb_face_reference_table ()

    hb_blob_t *
    hb_face_reference_table (const hb_face_t *face,
                             hb_tag_t tag);

#### Parameters

face | a face. |

#### Returns

.

[transfer full]

Since: 0.9.2

### hb_face_set_glyph_count ()

    void
    hb_face_set_glyph_count (hb_face_t *face,
                             unsigned int glyph_count);

#### Parameters

face | a face. |

Since: 0.9.7

### hb_face_set_index ()

    void
    hb_face_set_index (hb_face_t *face,
                       unsigned int index);

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_set_upem ()

    void
    hb_face_set_upem (hb_face_t *face,
                      unsigned int upem);

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_set_user_data ()

    hb_bool_t
    hb_face_set_user_data (hb_face_t *face,
                           hb_user_data_key_t *key,
                           void *data,
                           hb_destroy_func_t destroy,
                           hb_bool_t replace);

[skip]

#### Parameters

face | a face. |

Since: 0.9.2

### hb_face_collect_unicodes ()

    void
    hb_face_collect_unicodes (hb_face_t *face,
                              hb_set_t *out);

#### Parameters

face | font face. |
out | set to add Unicode characters covered by `face` to. |

Since: 1.9.0

### hb_face_collect_variation_selectors ()

    void
    hb_face_collect_variation_selectors (hb_face_t *face,
                                         hb_set_t *out);

#### Parameters

face | font face. |
out | set to add Variation Selector characters covered by `face` to. |

Since: 1.9.0

### hb_face_collect_variation_unicodes ()

    void
    hb_face_collect_variation_unicodes (hb_face_t *face,
                                        hb_codepoint_t variation_selector,
                                        hb_set_t *out);

#### Parameters

face | font face. |
out | set to add Unicode characters for `variation_selector` covered by `face` to. |

Since: 1.9.0

### hb_face_builder_create ()

    hb_face_t *
    hb_face_builder_create (void);

Creates a hb_face_t that can be used with `hb_face_builder_add_table()`. After tables are added to the face, it can be compiled to a binary font file by calling `hb_face_reference_blob()`.

#### Returns

New face.

[transfer full]

Since: 1.9.0

### hb_face_builder_add_table ()

    hb_bool_t
    hb_face_builder_add_table (hb_face_t *face,
                               hb_tag_t tag,
                               hb_blob_t *blob);

Add table for `tag` with data provided by `blob` to the face. `face` must be created using `hb_face_builder_create()`.

Since: 1.9.0

## Types and Values

### hb_face_t

    typedef struct hb_face_t hb_face_t;