## hb-shape-plan hb-shape-plan — Object representing a shaping plan |

## Functions

hb_shape_plan_t * | hb_shape_plan_create ()
hb_shape_plan_t * | hb_shape_plan_create_cached ()
hb_shape_plan_t * | hb_shape_plan_create2 ()
hb_shape_plan_t * | hb_shape_plan_create_cached2 ()
void | hb_shape_plan_destroy ()
hb_bool_t | hb_shape_plan_execute ()
hb_shape_plan_t * | hb_shape_plan_get_empty ()
const char * | hb_shape_plan_get_shaper ()
void * | hb_shape_plan_get_user_data ()
hb_shape_plan_t * | hb_shape_plan_reference ()
hb_bool_t | hb_shape_plan_set_user_data ()

## Types and Values

typedef | hb_shape_plan_t

## Object Hierarchy

        GBoxed
        ╰── hb_shape_plan_t

## Includes

    #include <hb.h>

## Description

Shape plans are not used for shaping directly, but can be access to query certain information about how shaping will perform given a set of input parameters (script, language, direction, features, etc.) Most client would not need to deal with shape plans directly.

## Functions

### 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);

[Xconstructor]

#### Parameters

user_features | . | [array length=num_user_features]
shaper_list | . | [array zero-terminated=1]

#### Returns

.

[transfer full]

Since: 0.9.7

### 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);

#### Parameters

user_features | . | [array length=num_user_features]
shaper_list | . | [array zero-terminated=1]

#### Returns

.

[transfer full]

Since: 0.9.7

### hb_shape_plan_create2 ()

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

### hb_shape_plan_create_cached2 ()

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

### hb_shape_plan_destroy ()

    void
    hb_shape_plan_destroy (hb_shape_plan_t *shape_plan);

[skip]

#### Parameters

shape_plan | a shape plan. |

Since: 0.9.7

### 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);

#### Parameters

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

Since: 0.9.7

### hb_shape_plan_get_empty ()

    hb_shape_plan_t *
    hb_shape_plan_get_empty (void);

#### Returns

.

[transfer full]

Since: 0.9.7

### hb_shape_plan_get_shaper ()

    const char *
    hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan);

#### Parameters

shape_plan | a shape plan. |

#### Returns

.

[transfer none]

Since: 0.9.7

### 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);

[skip]

#### Parameters

shape_plan | a shape plan. |

#### Returns

.

[transfer none]

Since: 0.9.7

### hb_shape_plan_reference ()

    hb_shape_plan_t *
    hb_shape_plan_reference (hb_shape_plan_t *shape_plan);

[skip]

#### Parameters

shape_plan | a shape plan. |

#### Returns

.

[transfer full]

Since: 0.9.7

### 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);

[skip]

#### Parameters

shape_plan | a shape plan. |

Since: 0.9.7

## Types and Values

### hb_shape_plan_t

    typedef struct hb_shape_plan_t hb_shape_plan_t;