Allow complex shapers overriding common features
In a new callback... Currently unused by all complex shapers.
This commit is contained in:
parent
df50b84740
commit
d96838ef95
|
@ -199,6 +199,12 @@ _hb_ot_shape_complex_collect_features_arabic (hb_ot_map_builder_t *map,
|
||||||
map->add_bool_feature (HB_TAG('c','s','w','h'));
|
map->add_bool_feature (HB_TAG('c','s','w','h'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_hb_ot_shape_complex_override_features_arabic (hb_ot_map_builder_t *map,
|
||||||
|
const hb_segment_properties_t *props)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
hb_ot_shape_normalization_mode_t
|
hb_ot_shape_normalization_mode_t
|
||||||
_hb_ot_shape_complex_normalization_preference_arabic (void)
|
_hb_ot_shape_complex_normalization_preference_arabic (void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -217,6 +217,12 @@ _hb_ot_shape_complex_collect_features_indic (hb_ot_map_builder_t *map,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_hb_ot_shape_complex_override_features_indic (hb_ot_map_builder_t *map,
|
||||||
|
const hb_segment_properties_t *props HB_UNUSED)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
hb_ot_shape_normalization_mode_t
|
hb_ot_shape_normalization_mode_t
|
||||||
_hb_ot_shape_complex_normalization_preference_indic (void)
|
_hb_ot_shape_complex_normalization_preference_indic (void)
|
||||||
|
|
|
@ -42,6 +42,12 @@ _hb_ot_shape_complex_collect_features_default (hb_ot_map_builder_t *map HB_UNUSE
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_hb_ot_shape_complex_override_features_default (hb_ot_map_builder_t *map HB_UNUSED,
|
||||||
|
const hb_segment_properties_t *props HB_UNUSED)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
hb_ot_shape_normalization_mode_t
|
hb_ot_shape_normalization_mode_t
|
||||||
_hb_ot_shape_complex_normalization_preference_default (void)
|
_hb_ot_shape_complex_normalization_preference_default (void)
|
||||||
{
|
{
|
||||||
|
@ -74,6 +80,12 @@ _hb_ot_shape_complex_collect_features_hangul (hb_ot_map_builder_t *map,
|
||||||
map->add_bool_feature (hangul_features[i]);
|
map->add_bool_feature (hangul_features[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_hb_ot_shape_complex_override_features_hangul (hb_ot_map_builder_t *map,
|
||||||
|
const hb_segment_properties_t *props HB_UNUSED)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
hb_ot_shape_normalization_mode_t
|
hb_ot_shape_normalization_mode_t
|
||||||
_hb_ot_shape_complex_normalization_preference_hangul (void)
|
_hb_ot_shape_complex_normalization_preference_hangul (void)
|
||||||
{
|
{
|
||||||
|
@ -97,6 +109,12 @@ _hb_ot_shape_complex_collect_features_thai (hb_ot_map_builder_t *map HB_UNUSED,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_hb_ot_shape_complex_override_features_thai (hb_ot_map_builder_t *map HB_UNUSED,
|
||||||
|
const hb_segment_properties_t *props HB_UNUSED)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
hb_ot_shape_normalization_mode_t
|
hb_ot_shape_normalization_mode_t
|
||||||
_hb_ot_shape_complex_normalization_preference_thai (void)
|
_hb_ot_shape_complex_normalization_preference_thai (void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -248,6 +248,36 @@ hb_ot_shape_complex_collect_features (hb_ot_complex_shaper_t shaper,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* override_features()
|
||||||
|
*
|
||||||
|
* Called during shape_plan().
|
||||||
|
*
|
||||||
|
* Shapers should use map to override features and add callbacks after
|
||||||
|
* common features are added.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef void hb_ot_shape_complex_override_features_func_t (hb_ot_map_builder_t *map, const hb_segment_properties_t *props);
|
||||||
|
#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
|
||||||
|
HB_INTERNAL hb_ot_shape_complex_override_features_func_t _hb_ot_shape_complex_override_features_##name;
|
||||||
|
HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
|
||||||
|
#undef HB_COMPLEX_SHAPER_IMPLEMENT
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
hb_ot_shape_complex_override_features (hb_ot_complex_shaper_t shaper,
|
||||||
|
hb_ot_map_builder_t *map,
|
||||||
|
const hb_segment_properties_t *props)
|
||||||
|
{
|
||||||
|
switch (shaper) {
|
||||||
|
default:
|
||||||
|
#define HB_COMPLEX_SHAPER_IMPLEMENT(name) \
|
||||||
|
case hb_ot_complex_shaper_##name: _hb_ot_shape_complex_override_features_##name (map, props); return;
|
||||||
|
HB_COMPLEX_SHAPERS_IMPLEMENT_SHAPERS
|
||||||
|
#undef HB_COMPLEX_SHAPER_IMPLEMENT
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* normalization_preference()
|
* normalization_preference()
|
||||||
*
|
*
|
||||||
|
|
|
@ -123,6 +123,8 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
|
||||||
else
|
else
|
||||||
ADD_FEATURES (vertical_features);
|
ADD_FEATURES (vertical_features);
|
||||||
|
|
||||||
|
hb_ot_shape_complex_override_features (planner->shaper, &planner->map, props);
|
||||||
|
|
||||||
#undef ADD_FEATURES
|
#undef ADD_FEATURES
|
||||||
|
|
||||||
for (unsigned int i = 0; i < num_user_features; i++) {
|
for (unsigned int i = 0; i < num_user_features; i++) {
|
||||||
|
|
Loading…
Reference in New Issue