[HarfBuzz] harfbuzz: Branch 'master' - 3 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Tue Oct 16 21:46:45 UTC 2018


 src/hb-aat-layout-morx-table.hh                                    |   27 +++++-----
 test/shaping/data/text-rendering-tests/DISABLED                    |    2 
 test/shaping/data/text-rendering-tests/Makefile.sources            |    1 
 test/shaping/data/text-rendering-tests/fonts/TestMORXFourtyone.ttf |binary
 test/shaping/data/text-rendering-tests/tests/MORX-41.tests         |    4 +
 5 files changed, 22 insertions(+), 12 deletions(-)

New commits:
commit 2137582c9696b6e38d70b4a0d4199b315c9fd4ce
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Oct 16 14:46:07 2018 -0700

    [morx] Reword ligation
    
    Still fails MORX-41.  Am talking to Sascha to better understand what CoreText
    is doing.

diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index 925c7da8..d8ba28ba 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -393,16 +393,18 @@ struct LigatureSubtable
 	unsigned int ligature_idx = 0;
 
 	if (unlikely (!match_length))
-	  return false;
+	  return true;
 
+	/* TODO Only when ligation happens? */
 	buffer->merge_out_clusters (match_positions[0], buffer->out_len);
 
+	unsigned int cursor = match_length;
         do
 	{
-	  if (unlikely (!match_length))
-	    return false;
+	  if (unlikely (!cursor))
+	    break;
 
-	  buffer->move_to (match_positions[--match_length]);
+	  buffer->move_to (match_positions[--cursor]);
 
 	  const HBUINT32 &actionData = ligAction[action_idx];
 	  if (unlikely (!actionData.sanitize (&c->sanitizer))) return false;
@@ -426,20 +428,21 @@ struct LigatureSubtable
 	    if (unlikely (!ligatureData.sanitize (&c->sanitizer))) return false;
 	    hb_codepoint_t lig = ligatureData;
 
-	    match_positions[match_length++] = buffer->out_len;
 	    buffer->replace_glyph (lig);
 
-	    //ligature_idx = 0; // XXX Yes or no?
-	  }
-	  else
-	  {
-	    buffer->skip_glyph ();
-	    end--;
+	    /* Now go and delete all subsequent components. */
+	    while (match_length - 1 > cursor)
+	    {
+	      buffer->move_to (match_positions[--match_length]);
+	      buffer->skip_glyph ();
+	      end--;
+	    }
 	  }
 
 	  action_idx++;
 	}
 	while (!(action & LigActionLast));
+	match_length = 0;
 	buffer->move_to (end);
       }
 
diff --git a/test/shaping/data/text-rendering-tests/DISABLED b/test/shaping/data/text-rendering-tests/DISABLED
index 8539c0ee..ef987a4d 100644
--- a/test/shaping/data/text-rendering-tests/DISABLED
+++ b/test/shaping/data/text-rendering-tests/DISABLED
@@ -1,3 +1,5 @@
+tests/MORX-41.tests
+
 # Non-Unicode cmap
 tests/CMAP-3.tests
 
diff --git a/test/shaping/data/text-rendering-tests/Makefile.sources b/test/shaping/data/text-rendering-tests/Makefile.sources
index f3325633..5e0db6bd 100644
--- a/test/shaping/data/text-rendering-tests/Makefile.sources
+++ b/test/shaping/data/text-rendering-tests/Makefile.sources
@@ -62,7 +62,6 @@ TESTS = \
 	tests/MORX-39.tests \
 	tests/MORX-3.tests \
 	tests/MORX-40.tests \
-	tests/MORX-41.tests \
 	tests/MORX-4.tests \
 	tests/MORX-5.tests \
 	tests/MORX-6.tests \
@@ -74,6 +73,7 @@ TESTS = \
 	$(NULL)
 
 DISBALED_TESTS = \
+	tests/MORX-41.tests \
 	tests/CMAP-3.tests \
 	tests/SHARAN-1.tests \
 	tests/SHBALI-1.tests \
commit c53a25c6579a4d3fe8e6a6fc198d70add41035ec
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Oct 16 13:57:35 2018 -0700

    [morx] Comment

diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index c88e7a72..925c7da8 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -410,7 +410,7 @@ struct LigatureSubtable
 
 	  uint32_t uoffset = action & LigActionOffset;
 	  if (uoffset & 0x20000000)
-	    uoffset += 0xC0000000;
+	    uoffset |= 0xC0000000; /* Sign-extend. */
 	  int32_t offset = (int32_t) uoffset;
 	  if (buffer->idx >= buffer->len)
 	    return false; // TODO Work on previous instead?
commit c46d42f8f2c303817467c6a4e19d69d0e433dba6
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue Oct 16 13:39:54 2018 -0700

    [test/text-rendering-tests] Update from upstream

diff --git a/test/shaping/data/text-rendering-tests/Makefile.sources b/test/shaping/data/text-rendering-tests/Makefile.sources
index c7f48760..f3325633 100644
--- a/test/shaping/data/text-rendering-tests/Makefile.sources
+++ b/test/shaping/data/text-rendering-tests/Makefile.sources
@@ -62,6 +62,7 @@ TESTS = \
 	tests/MORX-39.tests \
 	tests/MORX-3.tests \
 	tests/MORX-40.tests \
+	tests/MORX-41.tests \
 	tests/MORX-4.tests \
 	tests/MORX-5.tests \
 	tests/MORX-6.tests \
diff --git a/test/shaping/data/text-rendering-tests/fonts/TestMORXFourtyone.ttf b/test/shaping/data/text-rendering-tests/fonts/TestMORXFourtyone.ttf
new file mode 100644
index 00000000..98ebe332
Binary files /dev/null and b/test/shaping/data/text-rendering-tests/fonts/TestMORXFourtyone.ttf differ
diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-41.tests b/test/shaping/data/text-rendering-tests/tests/MORX-41.tests
new file mode 100644
index 00000000..84dca89a
--- /dev/null
+++ b/test/shaping/data/text-rendering-tests/tests/MORX-41.tests
@@ -0,0 +1,4 @@
+../fonts/TestMORXFourtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0061,U+0063:[a_c]
+../fonts/TestMORXFourtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0062,U+0063:[b_c]
+../fonts/TestMORXFourtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0063,U+0063:[c]
+../fonts/TestMORXFourtyone.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0061,U+0062,U+0063,U+0063:[a|b_c at 561,0|c at 1631,0]


More information about the HarfBuzz mailing list