diff --git a/src/hb-ot-shape-complex-myanmar.cc b/src/hb-ot-shape-complex-myanmar.cc index 258ccc470c3298bd401b102aad27b4c220ad3456..d016380cc6382f02f5b07dcf8481a235a9c95a24 100644 --- a/src/hb-ot-shape-complex-myanmar.cc +++ b/src/hb-ot-shape-complex-myanmar.cc @@ -536,6 +536,24 @@ final_reordering (const hb_ot_shape_plan_t *plan, } +/* Uniscribe seems to have a shaper for 'mymr' that is like the + * generic shaper, except that it zeros mark advances GDEF_LATE. */ +const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar_old = +{ + "default", + NULL, /* collect_features */ + NULL, /* override_features */ + NULL, /* data_create */ + NULL, /* data_destroy */ + NULL, /* preprocess_text */ + HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT, + NULL, /* decompose */ + NULL, /* compose */ + NULL, /* setup_masks */ + HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE, + true, /* fallback_position */ +}; + const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar = { "myanmar", diff --git a/src/hb-ot-shape-complex-private.hh b/src/hb-ot-shape-complex-private.hh index 3e581afa9cceeec773e7e31ec28bfee440c5b416..9a7afcbd7b15394ed0adda6c5bb05bdd5f7a62f3 100644 --- a/src/hb-ot-shape-complex-private.hh +++ b/src/hb-ot-shape-complex-private.hh @@ -56,6 +56,7 @@ enum hb_ot_shape_zero_width_marks_type_t { HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \ HB_COMPLEX_SHAPER_IMPLEMENT (hangul) \ HB_COMPLEX_SHAPER_IMPLEMENT (hebrew) \ + HB_COMPLEX_SHAPER_IMPLEMENT (myanmar_old) \ HB_COMPLEX_SHAPER_IMPLEMENT (indic) \ HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \ HB_COMPLEX_SHAPER_IMPLEMENT (sea) \ @@ -329,10 +330,10 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner) return &_hb_ot_complex_shaper_default; case HB_SCRIPT_MYANMAR: - /* For Myanmar, we only want to use the Myanmar shaper if the "new" script - * tag is found. For "old" script tag we want to use the default shaper. */ if (planner->map.chosen_script[0] == HB_TAG ('m','y','m','2')) return &_hb_ot_complex_shaper_myanmar; + else if (planner->map.chosen_script[0] == HB_TAG ('m','y','m','r')) + return &_hb_ot_complex_shaper_myanmar_old; else return &_hb_ot_complex_shaper_default; diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am index c2c4db69e2d0f249e77dcb5b799d9eb2037e362a..f40f2fffff7eaacd1ed18401537e63a15d5f500c 100644 --- a/test/shaping/Makefile.am +++ b/test/shaping/Makefile.am @@ -41,6 +41,7 @@ TESTS = \ tests/indic-old-spec.tests \ tests/indic-pref-blocking.tests \ tests/mongolian-variation-selector.tests \ + tests/zero-width-marks.tests \ $(NULL) TEST_EXTENSIONS = \ diff --git a/test/shaping/fonts/sha1sum/MANIFEST b/test/shaping/fonts/sha1sum/MANIFEST index 4aaa54d571b0c54126a0d8c348c915a71a23cded..0e9da647ceedce5a0eb18ae7f40ff9ae5176297c 100644 --- a/test/shaping/fonts/sha1sum/MANIFEST +++ b/test/shaping/fonts/sha1sum/MANIFEST @@ -7,6 +7,7 @@ 8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf a919b33197965846f21074b24e30250d67277bce.ttf bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf +bb9473d2403488714043bcfb946c9f78b86ad627.ttf d629e7fedc0b350222d7987345fe61613fa3929a.ttf e207635780b42f898d58654b65098763e340f5c7.ttf ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf diff --git a/test/shaping/fonts/sha1sum/bb9473d2403488714043bcfb946c9f78b86ad627.ttf b/test/shaping/fonts/sha1sum/bb9473d2403488714043bcfb946c9f78b86ad627.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b16dae6c575657c9de6b446147d688729fc65542 Binary files /dev/null and b/test/shaping/fonts/sha1sum/bb9473d2403488714043bcfb946c9f78b86ad627.ttf differ diff --git a/test/shaping/tests/MANIFEST b/test/shaping/tests/MANIFEST index a792e91bd1fb3b97114944de223b018d5f817278..8c2bdca198bb4b4cc65f062bbbad7dc1f4cf23e2 100644 --- a/test/shaping/tests/MANIFEST +++ b/test/shaping/tests/MANIFEST @@ -3,3 +3,4 @@ context-matching.tests indic-old-spec.tests indic-pref-blocking.tests mongolian-variation-selector.tests +zero-width-marks.tests diff --git a/test/shaping/tests/zero-width-marks.tests b/test/shaping/tests/zero-width-marks.tests new file mode 100644 index 0000000000000000000000000000000000000000..bfe080933ea1eb3a7668ee946686e5c83b36fc91 --- /dev/null +++ b/test/shaping/tests/zero-width-marks.tests @@ -0,0 +1 @@ +fonts/sha1sum/bb9473d2403488714043bcfb946c9f78b86ad627.ttf:U+1030:[circledash=0+636|u1030.med=0@-162,0+0]