From 1aea86944605e7e18acfd2c0a77ba60e62239274 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 11 Dec 2018 22:53:58 -0500 Subject: [PATCH] [subset] Map glyphs during SingleSubst subsetting Ha! --- src/hb-ot-layout-gsub-table.hh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh index 73a852f..04db198 100644 --- a/src/hb-ot-layout-gsub-table.hh +++ b/src/hb-ot-layout-gsub-table.hh @@ -110,6 +110,7 @@ struct SingleSubstFormat1 inline bool subset (hb_subset_context_t *c) const { TRACE_SUBSET (this); + const hb_map_t &glyph_map = *c->plan->glyph_map; hb_vector_t from; hb_vector_t to; hb_codepoint_t delta = deltaGlyphID; @@ -117,8 +118,8 @@ struct SingleSubstFormat1 { if (!c->plan->glyphset->has (iter.get_glyph ())) continue; - from.push ()->set (iter.get_glyph ()); - to.push ()->set ((iter.get_glyph () + delta) & 0xFFFF); + from.push ()->set (glyph_map[iter.get_glyph ()]); + to.push ()->set (glyph_map[(iter.get_glyph () + delta) & 0xFFFF]); } c->serializer->err (from.in_error () || to.in_error ()); @@ -216,14 +217,15 @@ struct SingleSubstFormat2 inline bool subset (hb_subset_context_t *c) const { TRACE_SUBSET (this); + const hb_map_t &glyph_map = *c->plan->glyph_map; hb_vector_t from; hb_vector_t to; for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ()) { if (!c->plan->glyphset->has (iter.get_glyph ())) continue; - from.push ()->set (iter.get_glyph ()); - to.push ()->set (substitute[iter.get_coverage ()]); + from.push ()->set (glyph_map[iter.get_glyph ()]); + to.push ()->set (glyph_map[substitute[iter.get_coverage ()]]); } c->serializer->err (from.in_error () || to.in_error ()); -- 2.7.4