Add old-Myanmar shaper
Looks like Unsicribe responds to the 'mymr' tag by zeroing marks GDEF_LATE instead of generic-shaper UNICODE_LATE. Implement that. Fixes Bug 81775 - Incorrect Rendering with harfbuzz-ng myanmar unicode https://bugs.freedesktop.org/show_bug.cgi?id=81775 Micro-test added based on Padauk.
This commit is contained in:
parent
595d2b96c3
commit
6f2d9ba52a
|
@ -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 =
|
const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar =
|
||||||
{
|
{
|
||||||
"myanmar",
|
"myanmar",
|
||||||
|
|
|
@ -56,6 +56,7 @@ enum hb_ot_shape_zero_width_marks_type_t {
|
||||||
HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \
|
HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \
|
||||||
HB_COMPLEX_SHAPER_IMPLEMENT (hangul) \
|
HB_COMPLEX_SHAPER_IMPLEMENT (hangul) \
|
||||||
HB_COMPLEX_SHAPER_IMPLEMENT (hebrew) \
|
HB_COMPLEX_SHAPER_IMPLEMENT (hebrew) \
|
||||||
|
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar_old) \
|
||||||
HB_COMPLEX_SHAPER_IMPLEMENT (indic) \
|
HB_COMPLEX_SHAPER_IMPLEMENT (indic) \
|
||||||
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \
|
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \
|
||||||
HB_COMPLEX_SHAPER_IMPLEMENT (sea) \
|
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;
|
return &_hb_ot_complex_shaper_default;
|
||||||
|
|
||||||
case HB_SCRIPT_MYANMAR:
|
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'))
|
if (planner->map.chosen_script[0] == HB_TAG ('m','y','m','2'))
|
||||||
return &_hb_ot_complex_shaper_myanmar;
|
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
|
else
|
||||||
return &_hb_ot_complex_shaper_default;
|
return &_hb_ot_complex_shaper_default;
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ TESTS = \
|
||||||
tests/indic-old-spec.tests \
|
tests/indic-old-spec.tests \
|
||||||
tests/indic-pref-blocking.tests \
|
tests/indic-pref-blocking.tests \
|
||||||
tests/mongolian-variation-selector.tests \
|
tests/mongolian-variation-selector.tests \
|
||||||
|
tests/zero-width-marks.tests \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
TEST_EXTENSIONS = \
|
TEST_EXTENSIONS = \
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf
|
8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf
|
||||||
a919b33197965846f21074b24e30250d67277bce.ttf
|
a919b33197965846f21074b24e30250d67277bce.ttf
|
||||||
bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf
|
bb29ce50df2bdba2d10726427c6b7609bf460e04.ttf
|
||||||
|
bb9473d2403488714043bcfb946c9f78b86ad627.ttf
|
||||||
d629e7fedc0b350222d7987345fe61613fa3929a.ttf
|
d629e7fedc0b350222d7987345fe61613fa3929a.ttf
|
||||||
e207635780b42f898d58654b65098763e340f5c7.ttf
|
e207635780b42f898d58654b65098763e340f5c7.ttf
|
||||||
ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf
|
ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf
|
||||||
|
|
Binary file not shown.
|
@ -3,3 +3,4 @@ context-matching.tests
|
||||||
indic-old-spec.tests
|
indic-old-spec.tests
|
||||||
indic-pref-blocking.tests
|
indic-pref-blocking.tests
|
||||||
mongolian-variation-selector.tests
|
mongolian-variation-selector.tests
|
||||||
|
zero-width-marks.tests
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
fonts/sha1sum/bb9473d2403488714043bcfb946c9f78b86ad627.ttf:U+1030:[circledash=0+636|u1030.med=0@-162,0+0]
|
Loading…
Reference in New Issue