[kerx] Disable backwards-kerning for non-state-machine tables

That's what the spec says for Backwards flag, only applicable to
formats 1 and 4.
This commit is contained in:
Behdad Esfahbod 2018-11-07 14:42:15 -05:00
parent b2f687c256
commit 0eb4157011
2 changed files with 4 additions and 6 deletions

View File

@ -118,7 +118,7 @@ struct KerxSubTableFormat0
if (!c->plan->requested_kerning)
return false;
if (header.coverage & header.CrossStream)
if (header.coverage & (header.CrossStream | header.Backwards))
return false;
accelerator_t accel (*this, c);
@ -427,7 +427,7 @@ struct KerxSubTableFormat2
if (!c->plan->requested_kerning)
return false;
if (header.coverage & header.CrossStream)
if (header.coverage & (header.CrossStream | header.Backwards))
return false;
accelerator_t accel (*this, c);
@ -696,7 +696,7 @@ struct KerxSubTableFormat6
if (!c->plan->requested_kerning)
return false;
if (header.coverage & header.CrossStream)
if (header.coverage & (header.CrossStream | header.Backwards))
return false;
accelerator_t accel (*this, c);
@ -918,8 +918,6 @@ struct KerxTable
c->sanitizer.set_object (*st);
/* XXX Reverse-kern is probably not working yet...
* hb_kern_machine_t would need to know that it's reverse-kerning. */
st->dispatch (c);
if (reverse)

View File

@ -66,7 +66,7 @@ struct KernSubTableFormat3
if (!c->plan->requested_kerning)
return false;
if (header.coverage & header.CrossStream)
if (header.coverage & (header.CrossStream | header.Backwards))
return false;
hb_kern_machine_t<KernSubTableFormat3> machine (*this);