Top |
Shape plans are an internal mechanism. Each plan contains state describing how HarfBuzz will shape a particular text segment, based on the combination of segment properties and the capabilities in the font face in use.
Shape plans are not used for shaping directly, but can be queried to access certain information about how shaping will perform, given a set of specific input parameters (script, language, direction, features, etc.).
Most client programs will not need to deal with shape plans directly.
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
);
Constructs a shaping plan for a combination of face
, user_features
, props
,
and shaper_list
.
face |
hb_face_t to use |
|
props |
The hb_segment_properties_t of the segment |
|
user_features |
The list of user-selected features. |
[array length=num_user_features] |
num_user_features |
The number of user-selected features |
|
shaper_list |
List of shapers to try. |
[array zero-terminated=1] |
Since: 0.9.7
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
);
Creates a cached shaping plan suitable for reuse, for a combination
of face
, user_features
, props
, and shaper_list
.
face |
hb_face_t to use |
|
props |
The hb_segment_properties_t of the segment |
|
user_features |
The list of user-selected features. |
[array length=num_user_features] |
num_user_features |
The number of user-selected features |
|
shaper_list |
List of shapers to try. |
[array zero-terminated=1] |
Since: 0.9.7
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
);
The variable-font version of hb_shape_plan_create.
Constructs a shaping plan for a combination of face
, user_features
, props
,
and shaper_list
, plus the variation-space coordinates coords
.
face |
hb_face_t to use |
|
props |
The hb_segment_properties_t of the segment |
|
user_features |
The list of user-selected features. |
[array length=num_user_features] |
num_user_features |
The number of user-selected features |
|
coords |
The list of variation-space coordinates. |
[array length=num_coords] |
num_coords |
The number of variation-space coordinates |
|
shaper_list |
List of shapers to try. |
[array zero-terminated=1] |
Since: 1.4.0
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
);
The variable-font version of hb_shape_plan_create_cached.
Creates a cached shaping plan suitable for reuse, for a combination
of face
, user_features
, props
, and shaper_list
, plus the
variation-space coordinates coords
.
face |
hb_face_t to use |
|
props |
The hb_segment_properties_t of the segment |
|
user_features |
The list of user-selected features. |
[array length=num_user_features] |
num_user_features |
The number of user-selected features |
|
coords |
The list of variation-space coordinates. |
[array length=num_coords] |
num_coords |
The number of variation-space coordinates |
|
shaper_list |
List of shapers to try. |
[array zero-terminated=1] |
Since: 1.4.0
hb_shape_plan_t *
hb_shape_plan_get_empty (void
);
Fetches the singleton empty shaping plan.
Since: 0.9.7
hb_shape_plan_t *
hb_shape_plan_reference (hb_shape_plan_t *shape_plan
);
Increases the reference count on the given shaping plan.
[skip]
Since: 0.9.7
void
hb_shape_plan_destroy (hb_shape_plan_t *shape_plan
);
Decreases the reference count on the given shaping plan. When the reference count reaches zero, the shaping plan is destroyed, freeing all memory.
[skip]
Since: 0.9.7
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
);
Attaches a user-data key/data pair to the given shaping plan.
[skip]
shape_plan |
A shaping plan |
|
key |
The user-data key to set |
|
data |
A pointer to the user data |
|
destroy |
A callback to call when |
[nullable] |
replace |
Whether to replace an existing data with the same key |
Since: 0.9.7
void * hb_shape_plan_get_user_data (const hb_shape_plan_t *shape_plan
,hb_user_data_key_t *key
);
Fetches the user data associated with the specified key, attached to the specified shaping plan.
[skip]
Since: 0.9.7
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
);
Executes the given shaping plan on the specified buffer, using
the given font
and features
.
shape_plan |
A shaping plan |
|
font |
The hb_font_t to use |
|
buffer |
The hb_buffer_t to work upon |
|
features |
Features to enable. |
[array length=num_features] |
num_features |
The number of features to enable |
Since: 0.9.7
const char *
hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan
);
Fetches the shaper from a given shaping plan.
Since: 0.9.7
typedef struct hb_shape_plan_t hb_shape_plan_t;
Data type for holding a shaping plan.
Shape plans contain information about how HarfBuzz will shape a particular text segment, based on the segment's properties and the capabilities in the font face in use.
Shape plans can be queried about how shaping will perform, given a set of specific input parameters (script, language, direction, features, etc.).