[HarfBuzz] harfbuzz: Branch 'master'

Behdad Esfahbod behdad at kemper.freedesktop.org
Tue Oct 23 23:50:48 UTC 2018


 src/hb-aat-layout-morx-table.hh                          |    7 ++++---
 test/shaping/data/in-house/Makefile.sources              |    1 +
 test/shaping/data/in-house/fonts/TestMORXTwentyeight.ttf |binary
 test/shaping/data/in-house/tests/aat-morx.tests          |    1 +
 4 files changed, 6 insertions(+), 3 deletions(-)

New commits:
commit ba502dea1e81981f3893b5353400909bf60e354f
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Oct 23 16:46:10 2018 -0700

    [morx] Fix cluster-merging when ligating
    
    Only merge when actual ligature happened.
    
    Fixes https://github.com/harfbuzz/harfbuzz/issues/1305

diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index ff791cb7..c663fcc8 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -399,9 +399,6 @@ struct LigatureSubtable
 	if (unlikely (!match_length))
 	  return true;
 
-	/* TODO Only when ligation happens? */
-	buffer->merge_out_clusters (match_positions[0], buffer->out_len);
-
 	unsigned int cursor = match_length;
         do
 	{
@@ -437,6 +434,7 @@ struct LigatureSubtable
 		     bool (action & LigActionLast));
 	  if (action & (LigActionStore | LigActionLast))
 	  {
+
 	    const GlyphID &ligatureData = ligature[ligature_idx];
 	    if (unlikely (!ligatureData.sanitize (&c->sanitizer))) return false;
 	    hb_codepoint_t lig = ligatureData;
@@ -452,6 +450,9 @@ struct LigatureSubtable
 	      buffer->skip_glyph ();
 	      end--;
 	    }
+
+	    buffer->move_to (end + 1);
+	    buffer->merge_out_clusters (match_positions[cursor], buffer->out_len);
 	  }
 
 	  action_idx++;
diff --git a/test/shaping/data/in-house/Makefile.sources b/test/shaping/data/in-house/Makefile.sources
index 6e21ddd4..e5f105c7 100644
--- a/test/shaping/data/in-house/Makefile.sources
+++ b/test/shaping/data/in-house/Makefile.sources
@@ -1,5 +1,6 @@
 TESTS = \
 	tests/aat-trak.tests \
+	tests/aat-morx.tests \
 	tests/arabic-fallback-shaping.tests \
 	tests/arabic-feature-order.tests \
 	tests/arabic-like-joining.tests \
diff --git a/test/shaping/data/in-house/fonts/TestMORXTwentyeight.ttf b/test/shaping/data/in-house/fonts/TestMORXTwentyeight.ttf
new file mode 100644
index 00000000..edabb439
Binary files /dev/null and b/test/shaping/data/in-house/fonts/TestMORXTwentyeight.ttf differ
diff --git a/test/shaping/data/in-house/tests/aat-morx.tests b/test/shaping/data/in-house/tests/aat-morx.tests
new file mode 100644
index 00000000..4153091d
--- /dev/null
+++ b/test/shaping/data/in-house/tests/aat-morx.tests
@@ -0,0 +1 @@
+../fonts/TestMORXTwentyeight.ttf::U+0041,U+0078,U+0045,U+0079,U+0044,U+0079,U+0079:[A_E_D=0+1394|x=0+529|y=0+510|y=5+510|y=6+510]


More information about the HarfBuzz mailing list