diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py index beea837c3..65415e2e9 100644 --- a/Lib/fontTools/subset/__init__.py +++ b/Lib/fontTools/subset/__init__.py @@ -555,6 +555,10 @@ def subset_glyphs(self, s): @_add_method(otTables.SinglePos) def prune_post_subset(self, font, options): + if self.Value is None: + assert self.ValueFormat == 0 + return True + # Shrink ValueFormat if self.Format == 1: if not options.hinting: @@ -572,7 +576,7 @@ def prune_post_subset(self, font, options): self.Value = self.Value[0] if self.ValueFormat != 0 else None del self.ValueCount - return bool(self.ValueFormat) + return True @_add_method(otTables.PairPos) def subset_glyphs(self, s): diff --git a/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.subset.ttx b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.subset.ttx new file mode 100644 index 000000000..7eee95fe4 --- /dev/null +++ b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.subset.ttx @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.ttx b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.ttx new file mode 100644 index 000000000..914963723 --- /dev/null +++ b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.ttx @@ -0,0 +1,689 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copyright 2019 Google Inc. All Rights Reserved. + + + Noto Sans Siddham + + + Regular + + + 2.001;GOOG;NotoSansSiddham-Regular + + + Noto Sans Siddham Regular + + + Version 2.001 + + + NotoSansSiddham-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/subset/subset_test.py b/Tests/subset/subset_test.py index 0c39eb011..1294ca586 100644 --- a/Tests/subset/subset_test.py +++ b/Tests/subset/subset_test.py @@ -793,6 +793,19 @@ class SubsetTest(unittest.TestCase): subsetfont = TTFont(subsetpath) self.expect_ttx(subsetfont, expected_ttx, ["GPOS"]) + def test_GPOS_SinglePos_prune_post_subset_no_value(self): + _, fontpath = self.compile_font( + self.getpath("GPOS_SinglePos_no_value_issue_2312.ttx"), ".ttf" + ) + subsetpath = self.temp_path(".ttf") + subset.main([fontpath, "*", "--glyph-names", "--output-file=%s" % subsetpath]) + subsetfont = TTFont(subsetpath) + self.expect_ttx( + subsetfont, + self.getpath("GPOS_SinglePos_no_value_issue_2312.subset.ttx"), + ["GlyphOrder", "GPOS"], + ) + @pytest.fixture def featureVarsTestFont():