diff --git a/src/hb-ot-shape-complex-khmer.cc b/src/hb-ot-shape-complex-khmer.cc index a5f357a591155e7e2405902356f48dcdf7f2b1dc..1a155a16ccd15969dd5993e06bbe035d5ac45042 100644 --- a/src/hb-ot-shape-complex-khmer.cc +++ b/src/hb-ot-shape-complex-khmer.cc @@ -107,18 +107,9 @@ collect_features_khmer (hb_ot_shape_planner_t *plan) map->add_gsub_pause (setup_syllables); map->add_gsub_pause (reorder); - map->add_global_bool_feature (HB_TAG('l','o','c','l')); - map->add_gsub_pause (nullptr); - - unsigned int i = 0; - 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_gsub_pause (nullptr); - } - - /* Testing suggests that Uniscribe applies 'ccmp' here, NOT before - * the basic features. Test with KhmerUI.ttf and the following - * three sequences: + /* Testing suggests that Uniscribe does NOT before between basic + * features. Test with KhmerUI.ttf and the following three + * sequences: * * U+1789,U+17BC * U+1789,U+17D2,U+1789 @@ -126,14 +117,20 @@ collect_features_khmer (hb_ot_shape_planner_t *plan) * * https://github.com/harfbuzz/harfbuzz/issues/974 */ + map->add_global_bool_feature (HB_TAG('l','o','c','l')); map->add_global_bool_feature (HB_TAG('c','c','m','p')); + + unsigned int i = 0; + 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_gsub_pause (nullptr); 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_global_bool_feature (HB_TAG('c','a','l','t')); map->add_global_bool_feature (HB_TAG('c','l','i','g'));