From 653bccdb0278dcd09c8c346bb77007391194c54b Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Wed, 2 Aug 2023 13:57:38 +0100 Subject: [PATCH] varLib_test: add test for variable CFF2 with empty glyph in sparse master Three masters, Regular and Bold have glyphs .notdef, a, e; Medium only has .notdef (but empty, no contours) and e. --- Tests/varLib/data/SparseCFF2.designspace | 23 ++ .../SparseCFF-Bold.ttx | 302 ++++++++++++++++++ .../SparseCFF-Medium.ttx | 100 ++++++ .../SparseCFF-Regular.ttx | 302 ++++++++++++++++++ .../data/test_results/SparseCFF2-VF.ttx | 119 +++++++ Tests/varLib/varLib_test.py | 10 + 6 files changed, 856 insertions(+) create mode 100644 Tests/varLib/data/SparseCFF2.designspace create mode 100644 Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Bold.ttx create mode 100644 Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Medium.ttx create mode 100644 Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Regular.ttx create mode 100644 Tests/varLib/data/test_results/SparseCFF2-VF.ttx diff --git a/Tests/varLib/data/SparseCFF2.designspace b/Tests/varLib/data/SparseCFF2.designspace new file mode 100644 index 000000000..cd8823a72 --- /dev/null +++ b/Tests/varLib/data/SparseCFF2.designspace @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Bold.ttx b/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Bold.ttx new file mode 100644 index 000000000..f744a8ad6 --- /dev/null +++ b/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Bold.ttx @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sparse CFF + + + Bold + + + 0.000;NONE;SparseCFF-Bold + + + Sparse CFF Bold + + + Version 0.000 + + + SparseCFF-Bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 500 50 -350 rmoveto + 500 0 rlineto + 0 1100 rlineto + -500 0 rlineto + 50 -950 rmoveto + 0 900 rlineto + 300 0 rlineto + 0 -900 rlineto + endchar + + + 468 -1 rmoveto + -21 435 rlineto + -233 70 rlineto + -205 -76 rlineto + 27 -147 rlineto + 172 60 rlineto + 96 -38 rlineto + 3 -304 rlineto + 71 264 rmoveto + -352 -23 rlineto + 3 -218 rlineto + 139 -34 rlineto + 221 83 rlineto + -6 78 rlineto + -182 -47 rlineto + -38 31 rlineto + 2 46 rlineto + 216 5 rlineto + endchar + + + 197 229 rmoveto + 404 -4 rlineto + -5 79 rlineto + -282 244 rlineto + -305 -286 rlineto + 179 -280 rlineto + 340 18 rlineto + -4 184 rlineto + -280 -54 rlineto + -27 134 rlineto + 84 96 rlineto + 103 -67 rlineto + -209 6 rlineto + endchar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Medium.ttx b/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Medium.ttx new file mode 100644 index 000000000..880183ea1 --- /dev/null +++ b/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Medium.ttx @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + endchar + + + 100 126 203 rmoveto + 450 -4 rlineto + -5 106 rlineto + -255 208 rlineto + -276 -252 rlineto + 148 -279 rlineto + 338 63 rlineto + -19 112 rlineto + -243 -41 rlineto + -84 148 rlineto + 138 123 rlineto + 78 -90 rlineto + -271 1 rlineto + endchar + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Regular.ttx b/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Regular.ttx new file mode 100644 index 000000000..a4dda26fd --- /dev/null +++ b/Tests/varLib/data/master_sparse_cff2_empty/SparseCFF-Regular.ttx @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sparse CFF + + + Regular + + + 0.000;NONE;SparseCFF-Regular + + + Sparse CFF Regular + + + Version 0.000 + + + SparseCFF-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 500 50 -250 rmoveto + 400 0 rlineto + 0 1000 rlineto + -400 0 rlineto + 50 -950 rmoveto + 0 900 rlineto + 300 0 rlineto + 0 -900 rlineto + endchar + + + 468 -1 rmoveto + -21 435 rlineto + -233 70 rlineto + -205 -76 rlineto + 27 -91 rlineto + 172 60 rlineto + 155 -40 rlineto + 3 -360 rlineto + 12 266 rmoveto + -352 -23 rlineto + 3 -218 rlineto + 139 -34 rlineto + 221 83 rlineto + -6 63 rlineto + -222 -60 rlineto + -75 52 rlineto + 2 46 rlineto + 294 35 rlineto + endchar + + + 127 228 rmoveto + 449 -2 rlineto + -5 79 rlineto + -255 208 rlineto + -276 -252 rlineto + 148 -279 rlineto + 338 63 rlineto + -17 84 rlineto + -280 -54 rlineto + -82 188 rlineto + 170 153 rlineto + 163 -124 rlineto + -355 6 rlineto + endchar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/varLib/data/test_results/SparseCFF2-VF.ttx b/Tests/varLib/data/test_results/SparseCFF2-VF.ttx new file mode 100644 index 000000000..eea7a4eb3 --- /dev/null +++ b/Tests/varLib/data/test_results/SparseCFF2-VF.ttx @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 50 -250 -100 1 blend + rmoveto + 400 1000 -400 100 100 -100 3 blend + hlineto + 50 -950 rmoveto + 900 300 -900 vlineto + + + 468 -1 rmoveto + -21 435 -233 70 -205 -76 27 -91 -56 1 blend + 172 60 155 -40 -59 2 2 blend + 3 -360 56 1 blend + rlineto + 12 266 59 -2 2 blend + rmoveto + -352 -23 3 -218 139 -34 221 83 -6 63 -222 -60 -75 52 15 40 13 37 -21 5 blend + 2 46 294 35 -78 -30 2 blend + rlineto + + + 1 vsindex + 127 228 -1 70 -25 1 2 blend + rmoveto + 449 -2 1 -45 -2 -2 2 blend + -5 79 -255 208 -276 -252 148 -279 338 63 -17 84 -280 -54 -82 188 170 153 163 -124 -355 6 27 0 0 -27 0 36 0 -29 0 -34 0 31 0 -1 0 2 0 -45 -2 13 28 100 37 0 13 0 -2 55 -40 -54 -32 -86 -30 -57 -85 -60 34 57 84 146 -5 0 21 blend + rlineto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + wght + 0x0 + 350.0 + 350.0 + 625.0 + 256 + + + + diff --git a/Tests/varLib/varLib_test.py b/Tests/varLib/varLib_test.py index 87b45f1ec..bcb2bae8b 100644 --- a/Tests/varLib/varLib_test.py +++ b/Tests/varLib/varLib_test.py @@ -999,6 +999,16 @@ Expected to see .ScriptCount==1, instead saw 0""", save_before_dump=True, ) + def test_varlib_build_variable_cff2_with_empty_sparse_glyph(self): + # https://github.com/fonttools/fonttools/issues/3233 + self._run_varlib_build_test( + designspace_name="SparseCFF2", + font_name="SparseCFF2", + tables=["GlyphOrder", "CFF2", "fvar"], + expected_ttx_name="SparseCFF2-VF", + save_before_dump=True, + ) + def test_load_masters_layerName_without_required_font(): ds = DesignSpaceDocument()