diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc index bcb5b72ff..9c941a3b7 100644 --- a/src/hb-ot-shape.cc +++ b/src/hb-ot-shape.cc @@ -129,7 +129,10 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t *planner, planner->shaper->collect_features (planner); for (unsigned int i = 0; i < ARRAY_LENGTH (common_features); i++) - map->enable_feature (common_features[i]); + map->add_feature (common_features[i], F_GLOBAL | + (common_features[i] == HB_TAG('m','a','r','k') || + common_features[i] == HB_TAG('m','k','m','k') ? + F_MANUAL_JOINERS : F_NONE)); if (HB_DIRECTION_IS_HORIZONTAL (props->direction)) for (unsigned int i = 0; i < ARRAY_LENGTH (horizontal_features); i++) diff --git a/test/shaping/data/in-house/Makefile.sources b/test/shaping/data/in-house/Makefile.sources index e5cf77fd3..a79ab0413 100644 --- a/test/shaping/data/in-house/Makefile.sources +++ b/test/shaping/data/in-house/Makefile.sources @@ -2,6 +2,7 @@ TESTS = \ tests/arabic-fallback-shaping.tests \ tests/arabic-feature-order.tests \ tests/arabic-like-joining.tests \ + tests/arabic-mark-attach.tests \ tests/arabic-mark-order.tests \ tests/arabic-stch.tests \ tests/automatic-fractions.tests \ diff --git a/test/shaping/data/in-house/fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf b/test/shaping/data/in-house/fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf new file mode 100644 index 000000000..1328e13ca Binary files /dev/null and b/test/shaping/data/in-house/fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf differ diff --git a/test/shaping/data/in-house/tests/arabic-mark-attach.tests b/test/shaping/data/in-house/tests/arabic-mark-attach.tests new file mode 100644 index 000000000..a577e51ad --- /dev/null +++ b/test/shaping/data/in-house/tests/arabic-mark-attach.tests @@ -0,0 +1 @@ +../fonts/641ca9d7808b01cafa9a666c13811c9b56eb9c52.ttf::U+064A,U+0633,U+06E1,U+200D,U+0654,U+064E,U+0644:[afii57444.zz04=6+1091|afii57454=1@75,925+0|uni0654=1+0|space=1+0|uni06E1=1@950,1115+0|afii57427.zz03_calt=1+1847|afii57450.zz21=0+345]