1072 skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks); |
1072 skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks); |
1073 do { |
1073 do { |
1074 if (!skippy_iter.prev ()) return_trace (false); |
1074 if (!skippy_iter.prev ()) return_trace (false); |
1075 /* We only want to attach to the first of a MultipleSubst sequence. |
1075 /* We only want to attach to the first of a MultipleSubst sequence. |
1076 * https://github.com/harfbuzz/harfbuzz/issues/740 |
1076 * https://github.com/harfbuzz/harfbuzz/issues/740 |
1077 * Reject others. */ |
1077 * Reject others... |
|
1078 * ...but stop if we find a mark in the MultipleSubst sequence: |
|
1079 * https://github.com/harfbuzz/harfbuzz/issues/1020 */ |
1078 if (!_hb_glyph_info_multiplied (&buffer->info[skippy_iter.idx]) || |
1080 if (!_hb_glyph_info_multiplied (&buffer->info[skippy_iter.idx]) || |
1079 0 == _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]) || |
1081 0 == _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]) || |
1080 (skippy_iter.idx == 0 || |
1082 (skippy_iter.idx == 0 || |
|
1083 _hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx - 1]) || |
1081 _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx]) != |
1084 _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx]) != |
1082 _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx - 1]) || |
1085 _hb_glyph_info_get_lig_id (&buffer->info[skippy_iter.idx - 1]) || |
1083 _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]) != |
1086 _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx]) != |
1084 _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx - 1]) + 1 |
1087 _hb_glyph_info_get_lig_comp (&buffer->info[skippy_iter.idx - 1]) + 1 |
1085 )) |
1088 )) |