From 905eb831b99547899e63d6eeef7fb5a4c1760bc4 Mon Sep 17 00:00:00 2001 From: Rod Sheeter Date: Wed, 9 Dec 2015 13:05:16 -0800 Subject: [PATCH] Add Google-style color font test and make _dict_subset more forgiving. --- Lib/fontTools/subset/__init__.py | 2 +- Lib/fontTools/subset/subset_test.py | 17 ++ .../subset/testdata/google_color.ttx | 250 ++++++++++++++++++ 3 files changed, 268 insertions(+), 1 deletion(-) create mode 100644 Lib/fontTools/subset/testdata/google_color.ttx diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py index 39de5b65c..ddb87c16f 100644 --- a/Lib/fontTools/subset/__init__.py +++ b/Lib/fontTools/subset/__init__.py @@ -332,7 +332,7 @@ def _set_update(s, *others): s.update(other) def _dict_subset(d, glyphs): - return {g:d[g] for g in glyphs} + return {g:d[g] for g in glyphs if g in d} @_add_method(otTables.Coverage) diff --git a/Lib/fontTools/subset/subset_test.py b/Lib/fontTools/subset/subset_test.py index c06540057..bc5c87fae 100644 --- a/Lib/fontTools/subset/subset_test.py +++ b/Lib/fontTools/subset/subset_test.py @@ -110,6 +110,23 @@ class SubsetTest(unittest.TestCase): self.assertTrue('Xyz-' in opt2.layout_features) self.assertTrue('Xyz-' not in opt1.layout_features) + def test_google_color(self): + _, fontpath = self.compile_font(self.getpath("google_color.ttx"), ".ttf") + subsetpath = self.temp_path(".ttf") + subset.main([fontpath, "--gids=0,1", "--output-file=%s" % subsetpath]) + subsetfont = TTFont(subsetpath) + self.assertTrue("CBDT" in subsetfont) + self.assertTrue("CBLC" in subsetfont) + self.assertTrue("x" in subsetfont['CBDT'].strikeData[0]) + self.assertFalse("y" in subsetfont['CBDT'].strikeData[0]) + + def test_google_color_all(self): + _, fontpath = self.compile_font(self.getpath("google_color.ttx"), ".ttf") + subsetpath = self.temp_path(".ttf") + subset.main([fontpath, "--unicodes=*", "--output-file=%s" % subsetpath]) + subsetfont = TTFont(subsetpath) + self.assertTrue("x" in subsetfont['CBDT'].strikeData[0]) + self.assertTrue("y" in subsetfont['CBDT'].strikeData[0]) if __name__ == "__main__": unittest.main() diff --git a/Lib/fontTools/subset/testdata/google_color.ttx b/Lib/fontTools/subset/testdata/google_color.ttx new file mode 100644 index 000000000..7cd119f21 --- /dev/null +++ b/Lib/fontTools/subset/testdata/google_color.ttx @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Meh + + + ZOMG + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + DEAD + + + + + + + + + + + + F00D + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +