Fix fallback positioning of double diacritic marks
authorBehdad Esfahbod <behdad@behdad.org>
Tue, 21 Nov 2017 03:43:22 +0000 (19:43 -0800)
committerBehdad Esfahbod <behdad@behdad.org>
Tue, 21 Nov 2017 03:43:22 +0000 (19:43 -0800)
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=787284

src/hb-ot-shape-fallback.cc
test/shaping/fonts/sha1sum/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf [new file with mode: 0644]
test/shaping/tests/fallback-positioning.tests

index f330884..458c8ea 100644 (file)
@@ -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 (file)
index 0000000..23da109
Binary files /dev/null and b/test/shaping/fonts/sha1sum/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf differ
index 3eace30..86f5640 100644 (file)
@@ -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]