提交 f6fd3780 编写于 作者: B Behdad Esfahbod

Let shapers decide when to apply ccmp and locl

Instead of always applying those two features before the complex shaper,
let the complex shaper decide whether they should be applied first.

Also add stub for Indic's final_reordering().
上级 c4641723
......@@ -163,6 +163,8 @@ _hb_ot_shape_complex_collect_features_arabic (hb_ot_map_builder_t *map, const hb
* TODO: Add test cases for these two.
*/
map->add_bool_feature (HB_TAG('c','c','m','p'));
map->add_gsub_pause (NULL, NULL);
unsigned int num_features = props->script == HB_SCRIPT_SYRIAC ? SYRIAC_NUM_FEATURES : COMMON_NUM_FEATURES;
......
......@@ -281,13 +281,29 @@ static const hb_tag_t indic_other_features[] =
HB_TAG('b','l','w','m'),
};
static void
final_reordering (const hb_ot_map_t *map,
hb_face_t *face,
hb_buffer_t *buffer,
void *user_data HB_UNUSED)
{
}
void
_hb_ot_shape_complex_collect_features_indic (hb_ot_map_builder_t *map, const hb_segment_properties_t *props)
{
map->add_bool_feature (HB_TAG('l','o','c','l'));
/* The Indic specs do not require ccmp, but we apply since if there is a
* use of it, it's typically at the beginning. */
map->add_bool_feature (HB_TAG('c','c','m','p'));
map->add_gsub_pause (NULL, NULL);
for (unsigned int i = 0; i < ARRAY_LENGTH (indic_basic_features); i++)
map->add_bool_feature (indic_basic_features[i].tag, indic_basic_features[i].is_global);
map->add_gsub_pause (final_reordering, NULL);
for (unsigned int i = 0; i < ARRAY_LENGTH (indic_other_features); i++)
map->add_bool_feature (indic_other_features[i], true);
}
......
......@@ -34,12 +34,9 @@
HB_BEGIN_DECLS
hb_tag_t early_features[] = {
hb_tag_t common_features[] = {
HB_TAG('c','c','m','p'),
HB_TAG('l','o','c','l'),
};
hb_tag_t common_features[] = {
HB_TAG('m','a','r','k'),
HB_TAG('m','k','m','k'),
HB_TAG('r','l','i','g'),
......@@ -94,8 +91,6 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner,
planner->map.add_bool_feature (array[i]); \
} HB_STMT_END
ADD_FEATURES (early_features);
hb_ot_shape_complex_collect_features (planner->shaper, &planner->map, props);
ADD_FEATURES (common_features);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册