提交 7c658ea2 编写于 作者: B Behdad Esfahbod

[khmer] Apply ccmp after basic features

Part of https://github.com/harfbuzz/harfbuzz/issues/974
上级 1a96cc82
...@@ -105,23 +105,35 @@ collect_features_khmer (hb_ot_shape_planner_t *plan) ...@@ -105,23 +105,35 @@ collect_features_khmer (hb_ot_shape_planner_t *plan)
/* Do this before any lookups have been applied. */ /* Do this before any lookups have been applied. */
map->add_gsub_pause (setup_syllables); map->add_gsub_pause (setup_syllables);
map->add_gsub_pause (reorder);
map->add_global_bool_feature (HB_TAG('l','o','c','l')); map->add_global_bool_feature (HB_TAG('l','o','c','l'));
/* The Indic specs do not require ccmp, but we apply it here since if map->add_gsub_pause (nullptr);
* there is a use of it, it's typically at the beginning. */
map->add_global_bool_feature (HB_TAG('c','c','m','p'));
unsigned int i = 0; unsigned int i = 0;
map->add_gsub_pause (reorder);
for (; i < KHMER_BASIC_FEATURES; i++) { for (; i < KHMER_BASIC_FEATURES; i++) {
map->add_feature (khmer_features[i].tag, 1, khmer_features[i].flags | F_MANUAL_ZWJ | F_MANUAL_ZWNJ); map->add_feature (khmer_features[i].tag, 1, khmer_features[i].flags | F_MANUAL_ZWJ | F_MANUAL_ZWNJ);
map->add_gsub_pause (nullptr); map->add_gsub_pause (nullptr);
} }
/* Testing suggests that Uniscribe applies 'ccmp' here, NOT before
* the basic features. Test with KhmerUI.ttf and the following
* three sequences:
*
* U+1789,U+17BC
* U+1789,U+17D2,U+1789
* U+1789,U+17D2,U+1789,U+17BC
*
* https://github.com/harfbuzz/harfbuzz/issues/974
*/
map->add_global_bool_feature (HB_TAG('c','c','m','p'));
map->add_gsub_pause (nullptr);
for (; i < KHMER_NUM_FEATURES; i++) { for (; i < KHMER_NUM_FEATURES; i++) {
map->add_feature (khmer_features[i].tag, 1, khmer_features[i].flags | F_MANUAL_ZWJ | F_MANUAL_ZWNJ); map->add_feature (khmer_features[i].tag, 1, khmer_features[i].flags | F_MANUAL_ZWJ | F_MANUAL_ZWNJ);
} }
map->add_global_bool_feature (HB_TAG('c','a','l','t')); map->add_global_bool_feature (HB_TAG('c','a','l','t'));
map->add_global_bool_feature (HB_TAG('c','l','i','g')); map->add_global_bool_feature (HB_TAG('c','l','i','g'));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册