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

Behdad Esfahbod behdad at kemper.freedesktop.org
Thu Jan 11 10:49:39 UTC 2018


 src/hb-aat-layout-morx-table.hh                 |   11 +++++++++--
 src/hb-buffer-serialize.cc                      |    4 ++--
 test/shaping/data/text-rendering-tests/DISABLED |   20 ++++++++++++++++++++
 3 files changed, 31 insertions(+), 4 deletions(-)

New commits:
commit 94644d7ea4cf217e4d6c6ff57d65e1e20866ea6d
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Thu Jan 11 11:49:07 2018 +0100

    [aat] Generate finegrained unsafe-to-break in state-machine!
    
    Neato.

diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index cbc69d26..8c62b174 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -57,16 +57,19 @@ struct RearrangementSubtable
     unsigned int num_glyphs = c->face->get_num_glyphs ();
 
     unsigned int state = 0;
+    unsigned int last_zero = 0;
+    unsigned int last_zero_before_start = 0;
     unsigned int start = 0;
     unsigned int end = 0;
 
     hb_glyph_info_t *info = c->buffer->info;
     unsigned int count = c->buffer->len;
 
-    c->buffer->unsafe_to_break (0, count); /* TODO Improve. */
-
     for (unsigned int i = 0; i < count; i++)
     {
+      if (!state)
+	last_zero = i;
+
       unsigned int klass = machine.get_class (info[i].codepoint, num_glyphs);
       const Entry<void> *entry = machine.get_entry (state, klass);
       if (unlikely (!entry))
@@ -75,7 +78,10 @@ struct RearrangementSubtable
       unsigned int flags = entry->flags;
 
       if (flags & MarkFirst)
+      {
 	start = i;
+	last_zero_before_start = last_zero;
+      }
 
       if (flags & MarkLast)
 	end = i + 1;
@@ -114,6 +120,7 @@ struct RearrangementSubtable
 
 	if (end - start >= l + r)
 	{
+	  c->buffer->unsafe_to_break (last_zero_before_start, i + 1);
 	  c->buffer->merge_clusters (start, end);
 
 	  hb_glyph_info_t buf[4];
commit 994eb7744c530bbaa5d6d8b8e07ca936e81aade8
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Thu Jan 11 11:37:12 2018 +0100

    [buffer] Fix crash

diff --git a/src/hb-buffer-serialize.cc b/src/hb-buffer-serialize.cc
index 6a19c43c..11471941 100644
--- a/src/hb-buffer-serialize.cc
+++ b/src/hb-buffer-serialize.cc
@@ -182,7 +182,7 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer,
     } else
       return i - start;
 
-    if (flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES)
+    if (pos && (flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES))
     {
       x += pos[i].x_advance;
       y += pos[i].y_advance;
@@ -268,7 +268,7 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer,
     } else
       return i - start;
 
-    if (flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES)
+    if (pos && (flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES))
     {
       x += pos[i].x_advance;
       y += pos[i].y_advance;
commit d6076747ac6706b4d8361714d46aced9683c44a8
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Thu Jan 11 10:51:46 2018 +0100

    [test/text-rendering-tests] Add DISABLED list

diff --git a/test/shaping/data/text-rendering-tests/DISABLED b/test/shaping/data/text-rendering-tests/DISABLED
new file mode 100644
index 00000000..7d63246c
--- /dev/null
+++ b/test/shaping/data/text-rendering-tests/DISABLED
@@ -0,0 +1,20 @@
+# Non-Unicode cmap
+tests/CMAP-3.tests
+
+# Not implemented
+tests/MORX-1.tests
+tests/MORX-2.tests
+tests/MORX-3.tests
+tests/MORX-4.tests
+tests/MORX-5.tests
+tests/MORX-6.tests
+tests/MORX-7.tests
+tests/MORX-8.tests
+tests/MORX-9.tests
+
+# Rounding differences
+tests/SHARAN-1.tests
+tests/SHBALI-1.tests
+tests/SHBALI-2.tests
+tests/SHKNDA-2.tests
+tests/SHKNDA-3.tests


More information about the HarfBuzz mailing list