From 0eb4157011e78c332d781e28b54b020aa08957c0 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 7 Nov 2018 14:42:15 -0500 Subject: [PATCH] [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. --- src/hb-aat-layout-kerx-table.hh | 8 +++----- src/hb-ot-kern-table.hh | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/hb-aat-layout-kerx-table.hh b/src/hb-aat-layout-kerx-table.hh index 4ef5d9e26..222285d46 100644 --- a/src/hb-aat-layout-kerx-table.hh +++ b/src/hb-aat-layout-kerx-table.hh @@ -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) diff --git a/src/hb-ot-kern-table.hh b/src/hb-ot-kern-table.hh index b90f7fba7..b2c29e303 100644 --- a/src/hb-ot-kern-table.hh +++ b/src/hb-ot-kern-table.hh @@ -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 machine (*this);