[unsafe-to-concat] Add annotations to GPOS and kern
Failures from 13 to 14.
This commit is contained in:
parent
36b1561715
commit
e1cbd4539f
|
@ -67,8 +67,10 @@ struct hb_kern_machine_t
|
||||||
}
|
}
|
||||||
|
|
||||||
skippy_iter.reset (idx, 1);
|
skippy_iter.reset (idx, 1);
|
||||||
if (!skippy_iter.next ())
|
unsigned unsafe_to;
|
||||||
|
if (!skippy_iter.next (&unsafe_to))
|
||||||
{
|
{
|
||||||
|
buffer->unsafe_to_concat (idx, unsafe_to);
|
||||||
idx++;
|
idx++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1362,7 +1362,12 @@ struct PairPosFormat1
|
||||||
|
|
||||||
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
||||||
skippy_iter.reset (buffer->idx, 1);
|
skippy_iter.reset (buffer->idx, 1);
|
||||||
if (!skippy_iter.next ()) return_trace (false);
|
unsigned unsafe_to;
|
||||||
|
if (!skippy_iter.next (&unsafe_to))
|
||||||
|
{
|
||||||
|
buffer->unsafe_to_concat (buffer->idx, unsafe_to);
|
||||||
|
return_trace (false);
|
||||||
|
}
|
||||||
|
|
||||||
return_trace ((this+pairSet[index]).apply (c, valueFormat, skippy_iter.idx));
|
return_trace ((this+pairSet[index]).apply (c, valueFormat, skippy_iter.idx));
|
||||||
}
|
}
|
||||||
|
@ -1555,7 +1560,12 @@ struct PairPosFormat2
|
||||||
|
|
||||||
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
||||||
skippy_iter.reset (buffer->idx, 1);
|
skippy_iter.reset (buffer->idx, 1);
|
||||||
if (!skippy_iter.next ()) return_trace (false);
|
unsigned unsafe_to;
|
||||||
|
if (!skippy_iter.next (&unsafe_to))
|
||||||
|
{
|
||||||
|
buffer->unsafe_to_concat (buffer->idx, unsafe_to);
|
||||||
|
return_trace (false);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int len1 = valueFormat1.get_len ();
|
unsigned int len1 = valueFormat1.get_len ();
|
||||||
unsigned int len2 = valueFormat2.get_len ();
|
unsigned int len2 = valueFormat2.get_len ();
|
||||||
|
@ -1861,7 +1871,12 @@ struct CursivePosFormat1
|
||||||
|
|
||||||
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
||||||
skippy_iter.reset (buffer->idx, 1);
|
skippy_iter.reset (buffer->idx, 1);
|
||||||
if (!skippy_iter.prev ()) return_trace (false);
|
unsigned unsafe_from;
|
||||||
|
if (!skippy_iter.prev (&unsafe_from))
|
||||||
|
{
|
||||||
|
buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx);
|
||||||
|
return_trace (false);
|
||||||
|
}
|
||||||
|
|
||||||
const EntryExitRecord &prev_record = entryExitRecord[(this+coverage).get_coverage (buffer->info[skippy_iter.idx].codepoint)];
|
const EntryExitRecord &prev_record = entryExitRecord[(this+coverage).get_coverage (buffer->info[skippy_iter.idx].codepoint)];
|
||||||
if (!prev_record.exitAnchor) return_trace (false);
|
if (!prev_record.exitAnchor) return_trace (false);
|
||||||
|
@ -2128,7 +2143,13 @@ struct MarkBasePosFormat1
|
||||||
skippy_iter.reset (buffer->idx, 1);
|
skippy_iter.reset (buffer->idx, 1);
|
||||||
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
|
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
|
||||||
do {
|
do {
|
||||||
if (!skippy_iter.prev ()) return_trace (false);
|
unsigned unsafe_from;
|
||||||
|
if (!skippy_iter.prev (&unsafe_from))
|
||||||
|
{
|
||||||
|
buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx);
|
||||||
|
return_trace (false);
|
||||||
|
}
|
||||||
|
|
||||||
/* We only want to attach to the first of a MultipleSubst sequence.
|
/* We only want to attach to the first of a MultipleSubst sequence.
|
||||||
* https://github.com/harfbuzz/harfbuzz/issues/740
|
* https://github.com/harfbuzz/harfbuzz/issues/740
|
||||||
* Reject others...
|
* Reject others...
|
||||||
|
@ -2382,7 +2403,12 @@ struct MarkLigPosFormat1
|
||||||
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
||||||
skippy_iter.reset (buffer->idx, 1);
|
skippy_iter.reset (buffer->idx, 1);
|
||||||
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
|
skippy_iter.set_lookup_props (LookupFlag::IgnoreMarks);
|
||||||
if (!skippy_iter.prev ()) return_trace (false);
|
unsigned unsafe_from;
|
||||||
|
if (!skippy_iter.prev (&unsafe_from))
|
||||||
|
{
|
||||||
|
buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx);
|
||||||
|
return_trace (false);
|
||||||
|
}
|
||||||
|
|
||||||
/* Checking that matched glyph is actually a ligature by GDEF is too strong; disabled */
|
/* Checking that matched glyph is actually a ligature by GDEF is too strong; disabled */
|
||||||
//if (!_hb_glyph_info_is_ligature (&buffer->info[skippy_iter.idx])) { return_trace (false); }
|
//if (!_hb_glyph_info_is_ligature (&buffer->info[skippy_iter.idx])) { return_trace (false); }
|
||||||
|
@ -2579,7 +2605,12 @@ struct MarkMarkPosFormat1
|
||||||
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
|
||||||
skippy_iter.reset (buffer->idx, 1);
|
skippy_iter.reset (buffer->idx, 1);
|
||||||
skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags);
|
skippy_iter.set_lookup_props (c->lookup_props & ~LookupFlag::IgnoreFlags);
|
||||||
if (!skippy_iter.prev ()) return_trace (false);
|
unsigned unsafe_from;
|
||||||
|
if (!skippy_iter.prev (&unsafe_from))
|
||||||
|
{
|
||||||
|
buffer->unsafe_to_concat_from_outbuffer (unsafe_from, buffer->idx);
|
||||||
|
return_trace (false);
|
||||||
|
}
|
||||||
|
|
||||||
if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx])) { return_trace (false); }
|
if (!_hb_glyph_info_is_mark (&buffer->info[skippy_iter.idx])) { return_trace (false); }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue