diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh index 738ca8c44..e45ce2721 100644 --- a/src/hb-ot-layout-gpos-table.hh +++ b/src/hb-ot-layout-gpos-table.hh @@ -1087,7 +1087,9 @@ struct MarkBasePosFormat1 do { if (!skippy_iter.prev ()) return_trace (false); /* We only want to attach to the first of a MultipleSubst sequence. Reject others. */ - if (0 == _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx])) break; + if (!_hb_glyph_info_multiplied (&buffer->info[skippy_iter.idx]) || + 0 == _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx])) + break; skippy_iter.reject (); } while (1); diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am index 6617e679c..d56bcc4c3 100644 --- a/test/shaping/Makefile.am +++ b/test/shaping/Makefile.am @@ -62,6 +62,7 @@ TESTS = \ tests/indic-syllable.tests \ tests/language-tags.tests \ tests/ligature-id.tests \ + tests/mark-attachment.tests \ tests/mark-filtering-sets.tests \ tests/mongolian-variation-selector.tests \ tests/spaces.tests \ diff --git a/test/shaping/fonts/sha1sum/98b7887cff91f722b92a8ff800120954606354f9.ttf b/test/shaping/fonts/sha1sum/98b7887cff91f722b92a8ff800120954606354f9.ttf new file mode 100644 index 000000000..4835c7623 Binary files /dev/null and b/test/shaping/fonts/sha1sum/98b7887cff91f722b92a8ff800120954606354f9.ttf differ diff --git a/test/shaping/tests/mark-attachment.tests b/test/shaping/tests/mark-attachment.tests new file mode 100644 index 000000000..c3c2d2784 --- /dev/null +++ b/test/shaping/tests/mark-attachment.tests @@ -0,0 +1 @@ +fonts/sha1sum/98b7887cff91f722b92a8ff800120954606354f9.ttf::U+100F,U+103C,U+102F,U+1036:[uni103C102F=0+150|uni100F=0+550|uni1036=0@-150,0+0]