diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh index 8d927e24a..2ebbc3511 100644 --- a/src/hb-aat-layout-morx-table.hh +++ b/src/hb-aat-layout-morx-table.hh @@ -714,7 +714,6 @@ struct InsertionSubtable hb_aat_apply_context_t *c_) : ret (false), c (c_), - mark_set (false), mark (0), insertionAction (table+table->insertionAction) {} @@ -730,7 +729,9 @@ struct InsertionSubtable hb_buffer_t *buffer = driver->buffer; unsigned int flags = entry->flags; - if (entry->data.markedInsertIndex != 0xFFFF && mark_set) + unsigned mark_loc = buffer->out_len; + + if (entry->data.markedInsertIndex != 0xFFFF) { unsigned int count = (flags & MarkedInsertCount); unsigned int start = entry->data.markedInsertIndex; @@ -755,6 +756,9 @@ struct InsertionSubtable buffer->unsafe_to_break_from_outbuffer (mark, MIN (buffer->idx + 1, buffer->len)); } + if (flags & SetMark) + mark = mark_loc; + if (entry->data.currentInsertIndex != 0xFFFF) { unsigned int count = (flags & CurrentInsertCount) >> 5; @@ -792,12 +796,6 @@ struct InsertionSubtable buffer->move_to ((flags & DontAdvance) ? end : end + count); } - if (flags & SetMark) - { - mark_set = true; - mark = buffer->out_len; - } - return true; } @@ -805,7 +803,6 @@ struct InsertionSubtable bool ret; private: hb_aat_apply_context_t *c; - bool mark_set; unsigned int mark; const UnsizedArrayOf &insertionAction; }; diff --git a/test/shaping/data/text-rendering-tests/DISABLED b/test/shaping/data/text-rendering-tests/DISABLED index b0719043e..8539c0ee1 100644 --- a/test/shaping/data/text-rendering-tests/DISABLED +++ b/test/shaping/data/text-rendering-tests/DISABLED @@ -1,6 +1,3 @@ -tests/MORX-31.tests -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 052a61236..ccbbb37f8 100644 --- a/test/shaping/data/text-rendering-tests/Makefile.sources +++ b/test/shaping/data/text-rendering-tests/Makefile.sources @@ -51,6 +51,7 @@ TESTS = \ tests/MORX-29.tests \ tests/MORX-2.tests \ tests/MORX-30.tests \ + tests/MORX-31.tests \ tests/MORX-32.tests \ tests/MORX-33.tests \ tests/MORX-34.tests \ @@ -61,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/extract-tests.py b/test/shaping/data/text-rendering-tests/extract-tests.py index 27d568615..f1722b52d 100755 --- a/test/shaping/data/text-rendering-tests/extract-tests.py +++ b/test/shaping/data/text-rendering-tests/extract-tests.py @@ -48,7 +48,7 @@ for elt in html.findall(".//*[@class='expected'][@ft:id]", namespaces): opts = opts + ' --variations=%s' % variations print ("../fonts/%s:%s:%s:%s" % (font, opts, unistr(text), glyphstr(glyphs))) -for elt in html.findall(".//*[@class='should-not-crash'][@ft:id]", namespaces): +for elt in html.findall(".//*[@class='expected-no-crash'][@ft:id]", namespaces): found = True name = elt.get(ns('ft:id')) text = elt.get(ns('ft:render')) diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-14.tests b/test/shaping/data/text-rendering-tests/tests/MORX-14.tests index 136924765..d01f2e93e 100644 --- a/test/shaping/data/text-rendering-tests/tests/MORX-14.tests +++ b/test/shaping/data/text-rendering-tests/tests/MORX-14.tests @@ -1,2 +1,2 @@ ../fonts/TestMORXFourteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0043,U+0044,U+0045:[B|C@626,0|D@1222,0|E@1896,0|A@2452,0] -../fonts/TestMORXFourteen.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041,U+0042,U+0042,U+0042,U+0043,U+0043,U+0043,U+0044,U+0044,U+0044,U+0042,U+0043,U+0044,U+0043,U+0045:[B|B@626,0|B@1252,0|C@1878,0|C@2474,0|C@3070,0|D@3666,0|D@4340,0|D@5014,0|B@5688,0|C@6314,0|D@6910,0|C@7584,0|E@8180,0|A@8736,0] +../fonts/TestMORXFourteen.ttf::U+0041,U+0042,U+0042,U+0042,U+0043,U+0043,U+0043,U+0044,U+0044,U+0044,U+0042,U+0043,U+0044,U+0043,U+0045:* diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-32.tests b/test/shaping/data/text-rendering-tests/tests/MORX-32.tests index 87c115252..6f3ae888e 100644 --- a/test/shaping/data/text-rendering-tests/tests/MORX-32.tests +++ b/test/shaping/data/text-rendering-tests/tests/MORX-32.tests @@ -1,4 +1,4 @@ -../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[A] -../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0041,U+0059:[X|A@364,0|Y@1194,0] -../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042:[B] -../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0042,U+0059:[X|B@364,0|Y@1194,0] +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0041:[I|N@830,0|S@1660,0|A@2490,0] +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0041,U+0059:[I|N@830,0|S@1660,0|X@2490,0|A@2854,0|Y@3684,0] +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0042:[B|I@830,0|N@1660,0|S@2490,0] +../fonts/TestMORXThirtytwo.ttf:--font-size=1000 --ned --remove-default-ignorables --font-funcs=ft:U+0058,U+0042,U+0059:[X|I@364,0|N@1194,0|S@2024,0|B@2854,0|Y@3684,0] diff --git a/test/shaping/data/text-rendering-tests/tests/MORX-41.tests b/test/shaping/data/text-rendering-tests/tests/MORX-41.tests index 84dca89ae..815bebe35 100644 --- a/test/shaping/data/text-rendering-tests/tests/MORX-41.tests +++ b/test/shaping/data/text-rendering-tests/tests/MORX-41.tests @@ -1,4 +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@561,0|c@1631,0] +../fonts/TestMORXFourtyone.ttf::U+0063,U+0063:* +../fonts/TestMORXFourtyone.ttf::U+0061,U+0062,U+0063,U+0063:*