## hb-shape-plan hb-shape-plan |

## Synopsis

    hb_shape_plan_t *   hb_shape_plan_create                (hb_face_t *face,
                                                             const hb_segment_properties_t *props,
                                                             const hb_feature_t *user_features,
                                                             unsigned int num_user_features,
                                                             const char * const *shaper_list);
    hb_shape_plan_t *   hb_shape_plan_create_cached         (hb_face_t *face,
                                                             const hb_segment_properties_t *props,
                                                             const hb_feature_t *user_features,
                                                             unsigned int num_user_features,
                                                             const char * const *shaper_list);
    void                hb_shape_plan_destroy               (hb_shape_plan_t *shape_plan);
    hb_bool_t           hb_shape_plan_execute               (hb_shape_plan_t *shape_plan,
                                                             hb_font_t *font,
                                                             hb_buffer_t *buffer,
                                                             const hb_feature_t *features,
                                                             unsigned int num_features);
    hb_shape_plan_t *   hb_shape_plan_get_empty             (void);
    const char *        hb_shape_plan_get_shaper            (hb_shape_plan_t *shape_plan);
    void *              hb_shape_plan_get_user_data         (hb_shape_plan_t *shape_plan,
                                                             hb_user_data_key_t *key);
    hb_shape_plan_t *   hb_shape_plan_reference             (hb_shape_plan_t *shape_plan);
    hb_bool_t           hb_shape_plan_set_user_data         (hb_shape_plan_t *shape_plan,
                                                             hb_user_data_key_t *key,
                                                             void *data,
                                                             hb_destroy_func_t destroy,
                                                             hb_bool_t replace);
    typedef             hb_shape_plan_t;

## Description

## Details

### hb_shape_plan_create ()

    hb_shape_plan_t *   hb_shape_plan_create                (hb_face_t *face,
                                                             const hb_segment_properties_t *props,
                                                             const hb_feature_t *user_features,
                                                             unsigned int num_user_features,
                                                             const char * const *shaper_list);

### hb_shape_plan_create_cached ()

    hb_shape_plan_t *   hb_shape_plan_create_cached         (hb_face_t *face,
                                                             const hb_segment_properties_t *props,
                                                             const hb_feature_t *user_features,
                                                             unsigned int num_user_features,
                                                             const char * const *shaper_list);

`user_features` : | . [array length=num_user_features]
`shaper_list` : | . [array zero-terminated=1]
Returns : | . [transfer full]

Since 1.0

### hb_shape_plan_destroy ()

    void                hb_shape_plan_destroy               (hb_shape_plan_t *shape_plan);

`shape_plan` : | a shape plan.

Since 1.0

### hb_shape_plan_execute ()

    hb_bool_t           hb_shape_plan_execute               (hb_shape_plan_t *shape_plan,
                                                             hb_font_t *font,
                                                             hb_buffer_t *buffer,
                                                             const hb_feature_t *features,
                                                             unsigned int num_features);

`shape_plan` : | a shape plan.
`font` : | a font.
`buffer` : | a buffer.
`features` : | . [array length=num_features]

Since 1.0

### hb_shape_plan_get_empty ()

    hb_shape_plan_t *   hb_shape_plan_get_empty             (void);

Returns : | . [transfer full]

Since 1.0

### hb_shape_plan_get_shaper ()

    const char *        hb_shape_plan_get_shaper            (hb_shape_plan_t *shape_plan);

`shape_plan` : | a shape plan.
Returns : | . [transfer none]

Since 1.0

### hb_shape_plan_get_user_data ()

    void *              hb_shape_plan_get_user_data         (hb_shape_plan_t *shape_plan,
                                                             hb_user_data_key_t *key);

`shape_plan` : | a shape plan.
Returns : | . [transfer none]

Since 1.0

### hb_shape_plan_reference ()

    hb_shape_plan_t *   hb_shape_plan_reference             (hb_shape_plan_t *shape_plan);

`shape_plan` : | a shape plan.
Returns : | . [transfer full]

Since 1.0

### hb_shape_plan_set_user_data ()

    hb_bool_t           hb_shape_plan_set_user_data         (hb_shape_plan_t *shape_plan,
                                                             hb_user_data_key_t *key,
                                                             void *data,
                                                             hb_destroy_func_t destroy,
                                                             hb_bool_t replace);

`shape_plan` : | a shape plan.

Since 1.0

### hb_shape_plan_t

    typedef struct hb_shape_plan_t hb_shape_plan_t;