[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