From: Behdad Esfahbod Date: Tue, 21 Nov 2017 03:43:22 +0000 (-0800) Subject: Fix fallback positioning of double diacritic marks X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8d55340593ce32e55cfbd86a17c0be8750e8fb72;p=platform%2Fupstream%2FlibHarfBuzzSharp.git Fix fallback positioning of double diacritic marks Fixes https://bugzilla.gnome.org/show_bug.cgi?id=787284 --- diff --git a/src/hb-ot-shape-fallback.cc b/src/hb-ot-shape-fallback.cc index f330884..458c8ea 100644 --- a/src/hb-ot-shape-fallback.cc +++ b/src/hb-ot-shape-fallback.cc @@ -218,10 +218,10 @@ position_mark (const hb_ot_shape_plan_t *plan, case HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: case HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: if (buffer->props.direction == HB_DIRECTION_LTR) { - pos.x_offset += base_extents.x_bearing - mark_extents.width / 2 - mark_extents.x_bearing; + pos.x_offset += base_extents.x_bearing + base_extents.width - mark_extents.width / 2 - mark_extents.x_bearing; break; } else if (buffer->props.direction == HB_DIRECTION_RTL) { - pos.x_offset += base_extents.x_bearing + base_extents.width - mark_extents.width / 2 - mark_extents.x_bearing; + pos.x_offset += base_extents.x_bearing - mark_extents.width / 2 - mark_extents.x_bearing; break; } HB_FALLTHROUGH; diff --git a/test/shaping/fonts/sha1sum/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf b/test/shaping/fonts/sha1sum/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf new file mode 100644 index 0000000..23da109 Binary files /dev/null and b/test/shaping/fonts/sha1sum/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf differ diff --git a/test/shaping/tests/fallback-positioning.tests b/test/shaping/tests/fallback-positioning.tests index 3eace30..86f5640 100644 --- a/test/shaping/tests/fallback-positioning.tests +++ b/test/shaping/tests/fallback-positioning.tests @@ -1 +1,2 @@ fonts/sha1sum/8228d035fcd65d62ec9728fb34f42c63be93a5d3.ttf::U+0078,U+0301,U+0058,U+0301:[x=0+1030|acutecomb=0@-21,-27+0|X=2+1295|acutecomb=2@-147,320+0] +fonts/sha1sum/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf::U+0061,U+035C,U+0062:[uni0061=0+512|uni035C=0@-64,-128+0|uni0062=2+512]