## hb-ot-layout hb-ot-layout |

## Functions

void | hb_ot_layout_collect_lookups ()
unsigned int | hb_ot_layout_feature_get_lookups ()
unsigned int | hb_ot_layout_feature_with_variations_get_lookups ()
unsigned int | hb_ot_layout_get_attach_points ()
hb_ot_layout_glyph_class_t | hb_ot_layout_get_glyph_class ()
void | hb_ot_layout_get_glyphs_in_class ()
unsigned int | hb_ot_layout_get_ligature_carets ()
hb_bool_t | hb_ot_layout_get_size_params ()
hb_bool_t | (*hb_ot_layout_glyph_sequence_func_t) ()
hb_bool_t | hb_ot_layout_has_glyph_classes ()
hb_bool_t | hb_ot_layout_has_positioning ()
hb_bool_t | hb_ot_layout_has_substitution ()
hb_bool_t | hb_ot_layout_language_find_feature ()
unsigned int | hb_ot_layout_language_get_feature_indexes ()
unsigned int | hb_ot_layout_language_get_feature_tags ()
hb_bool_t | hb_ot_layout_language_get_required_feature ()
void | hb_ot_layout_lookup_collect_glyphs ()
void | hb_ot_layout_lookup_substitute_closure ()
void | hb_ot_layout_lookups_substitute_closure ()
hb_bool_t | hb_ot_layout_lookup_would_substitute ()
hb_bool_t | hb_ot_layout_script_find_language ()
unsigned int | hb_ot_layout_script_get_language_tags ()
hb_bool_t | hb_ot_layout_table_choose_script ()
hb_bool_t | hb_ot_layout_table_find_feature_variations ()
hb_bool_t | hb_ot_layout_table_find_script ()
unsigned int | hb_ot_layout_table_get_feature_tags ()
unsigned int | hb_ot_layout_table_get_script_tags ()
unsigned int | hb_ot_layout_table_get_lookup_count ()
void | hb_ot_shape_plan_collect_lookups ()
hb_bool_t | hb_ot_layout_language_get_required_feature_index ()

## Types and Values

#define | HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX
#define | HB_OT_LAYOUT_NO_FEATURE_INDEX
#define | HB_OT_LAYOUT_NO_SCRIPT_INDEX
#define | HB_OT_LAYOUT_NO_VARIATIONS_INDEX
#define | HB_OT_TAG_GDEF
#define | HB_OT_TAG_GPOS
#define | HB_OT_TAG_GSUB
#define | HB_OT_TAG_JSTF
enum | hb_ot_layout_glyph_class_t

## Object Hierarchy

        GEnum
        ╰── hb_ot_layout_glyph_class_t

## Description

## Functions

### hb_ot_layout_collect_lookups ()

    void
    hb_ot_layout_collect_lookups (hb_face_t *face,
                                  hb_tag_t table_tag,
                                  const hb_tag_t *scripts,
                                  const hb_tag_t *languages,
                                  const hb_tag_t *features,
                                  hb_set_t *lookup_indexes);

Since: 0.9.8

### hb_ot_layout_feature_get_lookups ()

    unsigned int
    hb_ot_layout_feature_get_lookups (hb_face_t *face,
                                      hb_tag_t table_tag,
                                      unsigned int feature_index,
                                      unsigned int start_offset,
                                      unsigned int *lookup_count,
                                      unsigned int *lookup_indexes);

Since: 0.9.7

### hb_ot_layout_feature_with_variations_get_lookups ()

    unsigned int
    hb_ot_layout_feature_with_variations_get_lookups
                                   (hb_face_t *face,
                                    hb_tag_t table_tag,
                                    unsigned int feature_index,
                                    unsigned int variations_index,
                                    unsigned int start_offset,
                                    unsigned int *lookup_count,
                                    unsigned int *lookup_indexes);

### hb_ot_layout_get_attach_points ()

    unsigned int
    hb_ot_layout_get_attach_points (hb_face_t *face,
                                    hb_codepoint_t glyph,
                                    unsigned int start_offset,
                                    unsigned int *point_count,
                                    unsigned int *point_array);

### hb_ot_layout_get_glyph_class ()

    hb_ot_layout_glyph_class_t
    hb_ot_layout_get_glyph_class (hb_face_t *face,
                                  hb_codepoint_t glyph);

Since: 0.9.7

### hb_ot_layout_get_glyphs_in_class ()

    void
    hb_ot_layout_get_glyphs_in_class (hb_face_t *face,
                                      hb_ot_layout_glyph_class_t klass,
                                      hb_set_t *glyphs);

Since: 0.9.7

### hb_ot_layout_get_ligature_carets ()

    unsigned int
    hb_ot_layout_get_ligature_carets (hb_font_t *font,
                                      hb_direction_t direction,
                                      hb_codepoint_t glyph,
                                      unsigned int start_offset,
                                      unsigned int *caret_count,
                                      hb_position_t *caret_array);

### hb_ot_layout_get_size_params ()

    hb_bool_t
    hb_ot_layout_get_size_params (hb_face_t *face,
                                  unsigned int *design_size,
                                  unsigned int *subfamily_id,
                                  unsigned int *subfamily_name_id,
                                  unsigned int *range_start,
                                  unsigned int *range_end);

Since: 0.9.10

### hb_ot_layout_glyph_sequence_func_t ()

    hb_bool_t
    (*hb_ot_layout_glyph_sequence_func_t) (hb_font_t *font,
                                           hb_tag_t table_tag,
                                           unsigned int lookup_index,
                                           const hb_ot_layout_glyph_sequence_t *sequence,
                                           void *user_data);

### hb_ot_layout_has_glyph_classes ()

    hb_bool_t
    hb_ot_layout_has_glyph_classes (hb_face_t *face);

### hb_ot_layout_has_positioning ()

    hb_bool_t
    hb_ot_layout_has_positioning (hb_face_t *face);

### hb_ot_layout_has_substitution ()

    hb_bool_t
    hb_ot_layout_has_substitution (hb_face_t *face);

### hb_ot_layout_language_find_feature ()

    hb_bool_t
    hb_ot_layout_language_find_feature (hb_face_t *face,
                                        hb_tag_t table_tag,
                                        unsigned int script_index,
                                        unsigned int language_index,
                                        hb_tag_t feature_tag,
                                        unsigned int *feature_index);

### hb_ot_layout_language_get_feature_indexes ()

    unsigned int
    hb_ot_layout_language_get_feature_indexes
                                   (hb_face_t *face,
                                    hb_tag_t table_tag,
                                    unsigned int script_index,
                                    unsigned int language_index,
                                    unsigned int start_offset,
                                    unsigned int *feature_count,
                                    unsigned int *feature_indexes);

### hb_ot_layout_language_get_feature_tags ()

    unsigned int
    hb_ot_layout_language_get_feature_tags
                                   (hb_face_t *face,
                                    hb_tag_t table_tag,
                                    unsigned int script_index,
                                    unsigned int language_index,
                                    unsigned int start_offset,
                                    unsigned int *feature_count,
                                    hb_tag_t *feature_tags);

### hb_ot_layout_language_get_required_feature ()

    hb_bool_t
    hb_ot_layout_language_get_required_feature
                                   (hb_face_t *face,
                                    hb_tag_t table_tag,
                                    unsigned int script_index,
                                    unsigned int language_index,
                                    unsigned int *feature_index,
                                    hb_tag_t *feature_tag);

Since: 0.9.30

### hb_ot_layout_lookup_collect_glyphs ()

    void
    hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
                                        hb_tag_t table_tag,
                                        unsigned int lookup_index,
                                        hb_set_t *glyphs_before,
                                        hb_set_t *glyphs_input,
                                        hb_set_t *glyphs_after,
                                        hb_set_t *glyphs_output);

Since: 0.9.7

### hb_ot_layout_lookup_substitute_closure ()

    void
    hb_ot_layout_lookup_substitute_closure
                                   (hb_face_t *face,
                                    unsigned int lookup_index,
                                    hb_set_t *glyphs);

Since: 0.9.7

### hb_ot_layout_lookups_substitute_closure ()

    void
    hb_ot_layout_lookups_substitute_closure
                                   (hb_face_t *face,
                                    const hb_set_t *lookups,
                                    hb_set_t *glyphs);

Compute the transitive closure of glyphs needed for all of the provided lookups.

Since: 1.8.1

### hb_ot_layout_lookup_would_substitute ()

    hb_bool_t
    hb_ot_layout_lookup_would_substitute (hb_face_t *face,
                                          unsigned int lookup_index,
                                          const hb_codepoint_t *glyphs,
                                          unsigned int glyphs_length,
                                          hb_bool_t zero_context);

Since: 0.9.7

### hb_ot_layout_script_find_language ()

    hb_bool_t
    hb_ot_layout_script_find_language (hb_face_t *face,
                                       hb_tag_t table_tag,
                                       unsigned int script_index,
                                       hb_tag_t language_tag,
                                       unsigned int *language_index);

### hb_ot_layout_script_get_language_tags ()

    unsigned int
    hb_ot_layout_script_get_language_tags (hb_face_t *face,
                                           hb_tag_t table_tag,
                                           unsigned int script_index,
                                           unsigned int start_offset,
                                           unsigned int *language_count,
                                           hb_tag_t *language_tags);

### hb_ot_layout_table_choose_script ()

    hb_bool_t
    hb_ot_layout_table_choose_script (hb_face_t *face,
                                      hb_tag_t table_tag,
                                      const hb_tag_t *script_tags,
                                      unsigned int *script_index,
                                      hb_tag_t *chosen_script);

### hb_ot_layout_table_find_feature_variations ()

    hb_bool_t
    hb_ot_layout_table_find_feature_variations
                                   (hb_face_t *face,
                                    hb_tag_t table_tag,
                                    const int *coords,
                                    unsigned int num_coords,
                                    unsigned int *variations_index);

### hb_ot_layout_table_find_script ()

    hb_bool_t
    hb_ot_layout_table_find_script (hb_face_t *face,
                                    hb_tag_t table_tag,
                                    hb_tag_t script_tag,
                                    unsigned int *script_index);

### hb_ot_layout_table_get_feature_tags ()

    unsigned int
    hb_ot_layout_table_get_feature_tags (hb_face_t *face,
                                         hb_tag_t table_tag,
                                         unsigned int start_offset,
                                         unsigned int *feature_count,
                                         hb_tag_t *feature_tags);

### hb_ot_layout_table_get_script_tags ()

    unsigned int
    hb_ot_layout_table_get_script_tags (hb_face_t *face,
                                        hb_tag_t table_tag,
                                        unsigned int start_offset,
                                        unsigned int *script_count,
                                        hb_tag_t *script_tags);

### hb_ot_layout_table_get_lookup_count ()

    unsigned int
    hb_ot_layout_table_get_lookup_count (hb_face_t *face,
                                         hb_tag_t table_tag);

Since: 0.9.22

### hb_ot_shape_plan_collect_lookups ()

    void
    hb_ot_shape_plan_collect_lookups (hb_shape_plan_t *shape_plan,
                                      hb_tag_t table_tag,
                                      hb_set_t *lookup_indexes);

Since: 0.9.7

### hb_ot_layout_language_get_required_feature_index ()

    hb_bool_t
    hb_ot_layout_language_get_required_feature_index
                                   (hb_face_t *face,
                                    hb_tag_t table_tag,
                                    unsigned int script_index,
                                    unsigned int language_index,
                                    unsigned int *feature_index);

## Types and Values

### HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX

    #define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu

### HB_OT_LAYOUT_NO_FEATURE_INDEX

    #define HB_OT_LAYOUT_NO_FEATURE_INDEX		0xFFFFu

### HB_OT_LAYOUT_NO_SCRIPT_INDEX

    #define HB_OT_LAYOUT_NO_SCRIPT_INDEX		0xFFFFu

### HB_OT_LAYOUT_NO_VARIATIONS_INDEX

    #define HB_OT_LAYOUT_NO_VARIATIONS_INDEX 0xFFFFFFFFu

### HB_OT_TAG_GDEF

    #define HB_OT_TAG_GDEF HB_TAG('G','D','E','F')

### HB_OT_TAG_GPOS

    #define HB_OT_TAG_GPOS HB_TAG('G','P','O','S')

### HB_OT_TAG_GSUB

    #define HB_OT_TAG_GSUB HB_TAG('G','S','U','B')

### HB_OT_TAG_JSTF

    #define HB_OT_TAG_JSTF HB_TAG('J','S','T','F')

### enum hb_ot_layout_glyph_class_t

#### Members

HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED |  |
HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH |  |
HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE |  |
HB_OT_LAYOUT_GLYPH_CLASS_MARK |  |
HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT |  |