From a08900b721fc8c5e26215dabe62c4124985d434d Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Tue, 4 May 2021 16:48:41 -0700 Subject: [PATCH] [subset] fix failing colrv0 subsetting when font has composite glyphs. Composite glyph collection was happening along side colrv0 glyph collection which meant it was possible to miss grabbing the component glyphs for a glyph added by colrv0. --- src/hb-subset-plan.cc | 16 ++++++++++++---- test/subset/data/Makefile.am | 1 + test/subset/data/Makefile.sources | 1 + .../colr-table.default.6B.ttf | Bin 0 -> 4576 bytes .../colr-table.drop-hints-retain-gids.6B.ttf | Bin 0 -> 5300 bytes .../colr-table.drop-hints.6B.ttf | Bin 0 -> 4576 bytes .../colr-table.retain-gids.6B.ttf | Bin 0 -> 5300 bytes test/subset/data/fonts/colr-table.ttf | Bin 0 -> 26952 bytes .../data/tests/colr_with_components.tests | 11 +++++++++++ test/subset/meson.build | 1 + 10 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 test/subset/data/expected/colr_with_components/colr-table.default.6B.ttf create mode 100644 test/subset/data/expected/colr_with_components/colr-table.drop-hints-retain-gids.6B.ttf create mode 100644 test/subset/data/expected/colr_with_components/colr-table.drop-hints.6B.ttf create mode 100644 test/subset/data/expected/colr_with_components/colr-table.retain-gids.6B.ttf create mode 100644 test/subset/data/fonts/colr-table.ttf create mode 100644 test/subset/data/tests/colr_with_components.tests diff --git a/src/hb-subset-plan.cc b/src/hb-subset-plan.cc index dfb0d42f3..90161c52f 100644 --- a/src/hb-subset-plan.cc +++ b/src/hb-subset-plan.cc @@ -254,18 +254,26 @@ _populate_gids_to_retain (hb_subset_plan_t* plan, #endif _remove_invalid_gids (plan->_glyphset_gsub, plan->source->get_num_glyphs ()); + // Collect all glyphs referenced by COLRv0 + hb_set_t* cur_glyphset = plan->_glyphset_gsub; + hb_set_t glyphset_colrv0; + if (colr.is_valid ()) + { + glyphset_colrv0.union_ (cur_glyphset); + for (hb_codepoint_t gid : cur_glyphset->iter ()) + colr.closure_glyphs (gid, &glyphset_colrv0); + cur_glyphset = &glyphset_colrv0; + } + // Populate a full set of glyphs to retain by adding all referenced // composite glyphs. - hb_codepoint_t gid = HB_SET_VALUE_INVALID; - while (plan->_glyphset_gsub->next (&gid)) + for (hb_codepoint_t gid : cur_glyphset->iter ()) { glyf.add_gid_and_children (gid, plan->_glyphset); #ifndef HB_NO_SUBSET_CFF if (cff.is_valid ()) _add_cff_seac_components (cff, gid, plan->_glyphset); #endif - if (colr.is_valid ()) - colr.closure_glyphs (gid, plan->_glyphset); } _remove_invalid_gids (plan->_glyphset, plan->source->get_num_glyphs ()); diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index 03c32baf4..1f96b80a7 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am @@ -36,6 +36,7 @@ EXTRA_DIST += \ expected/cmap14 \ expected/sbix \ expected/colr \ + expected/colr_with_components \ expected/cbdt \ expected/variable \ fonts \ diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources index dd71a1101..b37872c9b 100644 --- a/test/subset/data/Makefile.sources +++ b/test/subset/data/Makefile.sources @@ -6,6 +6,7 @@ TESTS = \ tests/cmap.tests \ tests/cmap14.tests \ tests/colr.tests \ + tests/colr_with_components.tests \ tests/full-font.tests \ tests/japanese.tests \ tests/layout.context.tests \ diff --git a/test/subset/data/expected/colr_with_components/colr-table.default.6B.ttf b/test/subset/data/expected/colr_with_components/colr-table.default.6B.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a73bffb2252f8138253da619a60c929384392ee9 GIT binary patch literal 4576 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 AmjD0& literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/colr_with_components/colr-table.drop-hints.6B.ttf b/test/subset/data/expected/colr_with_components/colr-table.drop-hints.6B.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a73bffb2252f8138253da619a60c929384392ee9 GIT binary patch literal 4576 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 AmjD0& literal 0 HcmV?d00001 diff --git a/test/subset/data/fonts/colr-table.ttf b/test/subset/data/fonts/colr-table.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c4b2a55a51ce9a56dff5384ae56c868986916b6e GIT binary patch literal 26952 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/tests/colr_with_components.tests b/test/subset/data/tests/colr_with_components.tests new file mode 100644 index 000000000..5d7c66e4b --- /dev/null +++ b/test/subset/data/tests/colr_with_components.tests @@ -0,0 +1,11 @@ +FONTS: +colr-table.ttf + +PROFILES: +default.txt +drop-hints.txt +drop-hints-retain-gids.txt +retain-gids.txt + +SUBSETS: +k diff --git a/test/subset/meson.build b/test/subset/meson.build index d41c267b2..80282f410 100644 --- a/test/subset/meson.build +++ b/test/subset/meson.build @@ -28,6 +28,7 @@ tests = [ 'cmap14', 'sbix', 'colr', + 'colr_with_components', 'cbdt', 'variable', ]