## hb-ot-name hb-ot-name — OpenType font name information |

## Functions

const hb_ot_name_entry_t * | hb_ot_name_list_names ()
unsigned int | hb_ot_name_get_utf16 ()
unsigned int | hb_ot_name_get_utf32 ()
unsigned int | hb_ot_name_get_utf8 ()

## Types and Values

typedef | hb_ot_name_id_t
| hb_ot_name_entry_t

## Includes

    #include <hb-ot.h>

## Description

Functions for fetching name strings from OpenType fonts.

## Functions

### hb_ot_name_list_names ()

    const hb_ot_name_entry_t *
    hb_ot_name_list_names (hb_face_t *face,
                           unsigned int *num_entries);

Enumerates all available name IDs and language combinations. Returned array is owned by the `face` and should not be modified. It can be used as long as `face` is alive.

#### Parameters

face | font face. |
num_entries | number of returned entries. | [out][allow-none]

#### Returns

Array of available name entries.

[out][transfer none][array length=num_entries]

Since: 2.1.0

### hb_ot_name_get_utf16 ()

    unsigned int
    hb_ot_name_get_utf16 (hb_face_t *face,
                          hb_ot_name_id_t name_id,
                          hb_language_t language,
                          unsigned int *text_size,
                          uint16_t *text);

Fetches a font name from the OpenType 'name' table. If `language` is HB_LANGUAGE_INVALID, English ("en") is assumed. Returns string in UTF-16 encoding.

#### Parameters

face | font face. |
name_id | OpenType name identifier to fetch. |
language | language to fetch the name for. |
text_size | input size of `text` buffer, and output size of text written to buffer. | [inout][allow-none]
text | buffer to write fetched name into. | [out caller-allocates][array length=text_size]

#### Returns

full length of the requested string, or 0 if not found.

Since: 2.1.0

### hb_ot_name_get_utf32 ()

    unsigned int
    hb_ot_name_get_utf32 (hb_face_t *face,
                          hb_ot_name_id_t name_id,
                          hb_language_t language,
                          unsigned int *text_size,
                          uint32_t *text);

Fetches a font name from the OpenType 'name' table. If `language` is HB_LANGUAGE_INVALID, English ("en") is assumed. Returns string in UTF-32 encoding.

#### Parameters

face | font face. |
name_id | OpenType name identifier to fetch. |
language | language to fetch the name for. |
text_size | input size of `text` buffer, and output size of text written to buffer. | [inout][allow-none]
text | buffer to write fetched name into. | [out caller-allocates][array length=text_size]

#### Returns

full length of the requested string, or 0 if not found.

Since: 2.1.0

### hb_ot_name_get_utf8 ()

    unsigned int
    hb_ot_name_get_utf8 (hb_face_t *face,
                         hb_ot_name_id_t name_id,
                         hb_language_t language,
                         unsigned int *text_size,
                         char *text);

Fetches a font name from the OpenType 'name' table. If `language` is HB_LANGUAGE_INVALID, English ("en") is assumed. Returns string in UTF-8 encoding.

#### Parameters

face | font face. |
name_id | OpenType name identifier to fetch. |
language | language to fetch the name for. |
text_size | input size of `text` buffer, and output size of text written to buffer. | [inout][allow-none]
text | buffer to write fetched name into. | [out caller-allocates][array length=text_size]

#### Returns

full length of the requested string, or 0 if not found.

Since: 2.1.0

## Types and Values

### hb_ot_name_id_t

    typedef unsigned int hb_ot_name_id_t;

An integral type representing an OpenType 'name' table name identifier. There are predefined name IDs, as well as name IDs return from other API. These can be used to fetch name strings from a font face.

Since: 2.0.0

### hb_ot_name_entry_t

    typedef struct {
      hb_ot_name_id_t name_id;
      hb_language_t   language;
    } hb_ot_name_entry_t;

Structure representing a name ID in a particular language.

#### Members

hb_ot_name_id_t `name_id`; | name ID |
hb_language_t `language`; | language |

Since: 2.1.0