[subset] Don't add invalid gids (-1) to the glyphset when loading glyph map from the accelerator.
diff --git a/src/OT/Layout/GPOS/PairPosFormat1.hh b/src/OT/Layout/GPOS/PairPosFormat1.hh index b4a9a9a..4dada1c 100644 --- a/src/OT/Layout/GPOS/PairPosFormat1.hh +++ b/src/OT/Layout/GPOS/PairPosFormat1.hh
@@ -55,7 +55,7 @@ if (pairSet.len > glyphs->get_population () * hb_bit_storage ((unsigned) pairSet.len) / 4) { - for (hb_codepoint_t g = HB_SET_VALUE_INVALID; glyphs->next (&g);) + for (hb_codepoint_t g : glyphs->iter()) { unsigned i = cov.get_coverage (g); if ((this+pairSet[i]).intersects (glyphs, valueFormat))
diff --git a/src/hb-subset-plan.cc b/src/hb-subset-plan.cc index 5ac22e7..3a2d508 100644 --- a/src/hb-subset-plan.cc +++ b/src/hb-subset-plan.cc
@@ -556,9 +556,12 @@ if (plan->codepoint_to_glyph->has (cp)) continue; - hb_codepoint_t gid = (*unicode_glyphid_map)[cp]; - plan->codepoint_to_glyph->set (cp, gid); - plan->unicode_to_new_gid_list.push (hb_pair (cp, gid)); + hb_codepoint_t *gid; + if (!unicode_glyphid_map->has(cp, &gid)) + continue; + + plan->codepoint_to_glyph->set (cp, *gid); + plan->unicode_to_new_gid_list.push (hb_pair (cp, *gid)); } plan->unicode_to_new_gid_list.qsort (); }
diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index 864db2d..e13053e 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am
@@ -10,6 +10,7 @@ $(DISABLED_TESTS) \ expected/32bit_var_store \ expected/basics \ + expected/preprocess \ expected/full-font \ expected/glyf_bug_3131 \ expected/cff-full-font \
diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources index 6437c00..22367f9 100644 --- a/test/subset/data/Makefile.sources +++ b/test/subset/data/Makefile.sources
@@ -1,6 +1,7 @@ TESTS = \ tests/32bit_var_store.tests \ tests/basics.tests \ + tests/preprocess.tests \ tests/cbdt.tests \ tests/cff-full-font.tests \ tests/cff-japanese.tests \
diff --git a/test/subset/data/expected/preprocess/Roboto-Regular.gids.61,62,63,30D9.ttf b/test/subset/data/expected/preprocess/Roboto-Regular.gids.61,62,63,30D9.ttf new file mode 100644 index 0000000..5f8bff0 --- /dev/null +++ b/test/subset/data/expected/preprocess/Roboto-Regular.gids.61,62,63,30D9.ttf Binary files differ
diff --git a/test/subset/data/tests/preprocess.tests b/test/subset/data/tests/preprocess.tests new file mode 100644 index 0000000..ba2a0e2 --- /dev/null +++ b/test/subset/data/tests/preprocess.tests
@@ -0,0 +1,8 @@ +FONTS: +Roboto-Regular.ttf + +PROFILES: +gids.txt + +SUBSETS: +abcベ
diff --git a/test/subset/meson.build b/test/subset/meson.build index 4f360a3..289cc16 100644 --- a/test/subset/meson.build +++ b/test/subset/meson.build
@@ -1,5 +1,6 @@ tests = [ 'basics', + 'preprocess', 'full-font', 'cff-full-font', 'japanese',