[khmer] Apply ccmp after basic features
Part of https://github.com/harfbuzz/harfbuzz/issues/974
This commit is contained in:
parent
1a96cc825d
commit
7c658ea2f2
|
@ -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'));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue