From c5e464ad8f9e13a3bfd8a6b120edbbe896cebce1 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 10 Mar 2023 15:23:30 +0000 Subject: [PATCH] C_O_L_R_test: add tests for computeClipBoxes using a subset from test_glyphs font from the googlefonts/color-fonts repository --- Tests/ttLib/tables/C_O_L_R_test.py | 25 + .../tables/data/COLRv1-clip-boxes-cff.ttx | 1213 ++++++++++++++ .../tables/data/COLRv1-clip-boxes-glyf.ttx | 1414 +++++++++++++++++ .../data/COLRv1-clip-boxes-q1-expected.ttx | 919 +++++++++++ .../data/COLRv1-clip-boxes-q10-expected.ttx | 911 +++++++++++ .../data/COLRv1-clip-boxes-q100-expected.ttx | 863 ++++++++++ 6 files changed, 5345 insertions(+) create mode 100644 Tests/ttLib/tables/data/COLRv1-clip-boxes-cff.ttx create mode 100644 Tests/ttLib/tables/data/COLRv1-clip-boxes-glyf.ttx create mode 100644 Tests/ttLib/tables/data/COLRv1-clip-boxes-q1-expected.ttx create mode 100644 Tests/ttLib/tables/data/COLRv1-clip-boxes-q10-expected.ttx create mode 100644 Tests/ttLib/tables/data/COLRv1-clip-boxes-q100-expected.ttx diff --git a/Tests/ttLib/tables/C_O_L_R_test.py b/Tests/ttLib/tables/C_O_L_R_test.py index 18e41dc8e..71789a4de 100644 --- a/Tests/ttLib/tables/C_O_L_R_test.py +++ b/Tests/ttLib/tables/C_O_L_R_test.py @@ -1,11 +1,16 @@ from fontTools import ttLib from fontTools.misc.testTools import getXML, parseXML +from fontTools.ttLib import TTFont from fontTools.ttLib.tables.C_O_L_R_ import table_C_O_L_R_ +from pathlib import Path import binascii import pytest +TEST_DATA_DIR = Path(__file__).parent / "data" + + COLR_V0_SAMPLE = ( (b"\x00\x00", "Version (0)"), (b"\x00\x01", "BaseGlyphRecordCount (1)"), @@ -611,6 +616,26 @@ class COLR_V1_Test(object): colr.decompile(compiled, font) assert getXML(colr.toXML, font) == COLR_V1_XML + @pytest.mark.parametrize("quantization", [1, 10, 100]) + @pytest.mark.parametrize("flavor", ["glyf", "cff"]) + def test_computeClipBoxes(self, flavor, quantization): + font = TTFont() + font.importXML(TEST_DATA_DIR / f"COLRv1-clip-boxes-{flavor}.ttx") + assert font["COLR"].table.ClipList is None + + font["COLR"].table.computeClipBoxes(font.getGlyphSet(), quantization) + + clipList = font["COLR"].table.ClipList + assert len(clipList.clips) > 0 + + expected = TTFont() + expected.importXML( + TEST_DATA_DIR / f"COLRv1-clip-boxes-q{quantization}-expected.ttx" + ) + expectedClipList = expected["COLR"].table.ClipList + + assert getXML(clipList.toXML) == getXML(expectedClipList.toXML) + class COLR_V1_Variable_Test(object): def test_round_trip_xml(self, font): diff --git a/Tests/ttLib/tables/data/COLRv1-clip-boxes-cff.ttx b/Tests/ttLib/tables/data/COLRv1-clip-boxes-cff.ttx new file mode 100644 index 000000000..05172caef --- /dev/null +++ b/Tests/ttLib/tables/data/COLRv1-clip-boxes-cff.ttx @@ -0,0 +1,1213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + COLRv1 Static Test Glyphs + + + Regular + + + COLRv1 Static Test Glyphs 2023-03-10T15:01:34.955294 + + + COLRv1 Static Test Glyphs Regular + + + 2023-03-10T15:01:34.955294 + + + COLRv1StaticTestGlyphs-Regular + + + COLRv1 Static Test Glyphs + + + Regular + + + COLRv1 Static Test Glyphs 2023-03-10T15:01:34.955294 + + + COLRv1 Static Test Glyphs Regular + + + 2023-03-10T15:01:34.955294 + + + COLRv1StaticTestGlyphs-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 600 endchar + + + 0 endchar + + + 1000 475 525 rmoveto + 225 50 -225 225 -50 -225 -225 -50 225 -225 50 vlineto + endchar + + + 1000 296 543 rmoveto + -293 -37 247 vlineto + -75 -31 0 37 106 40 rlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 0 hmoveto + 1000 1000 -1000 vlineto + endchar + + + 1000 357 374 rmoveto + -47 -8 -34 -17 -19 vhcurveto + -19 -16 -23 -9 -28 hhcurveto + -28 -22 9 19 -17 hvcurveto + -17 19 -8 34 47 vvcurveto + 45 vlineto + 47 8 33 17 19 vhcurveto + 18 17 22 9 28 hhcurveto + 28 23 -9 -18 16 hvcurveto + 17 -19 8 -33 -47 vvcurveto + -37 6 rmoveto + 33 -5 23 -9 14 vhcurveto + 13 -10 -13 7 -18 hhcurveto + -18 -13 -7 -13 -10 hvcurveto + -9 -14 -5 -23 -33 vvcurveto + -57 vlineto + -32 5 -24 10 -14 vhcurveto + -14 9 14 -8 17 hhcurveto + 18 14 8 14 9 hvcurveto + 9 14 5 24 32 vvcurveto + endchar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ttLib/tables/data/COLRv1-clip-boxes-glyf.ttx b/Tests/ttLib/tables/data/COLRv1-clip-boxes-glyf.ttx new file mode 100644 index 000000000..2f1c14c40 --- /dev/null +++ b/Tests/ttLib/tables/data/COLRv1-clip-boxes-glyf.ttx @@ -0,0 +1,1414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + COLRv1 Static Test Glyphs + + + Regular + + + COLRv1 Static Test Glyphs 2023-03-10T15:07:35.658876 + + + COLRv1 Static Test Glyphs Regular + + + 2023-03-10T15:07:35.658876 + + + COLRv1StaticTestGlyphs-Regular + + + COLRv1 Static Test Glyphs + + + Regular + + + COLRv1 Static Test Glyphs 2023-03-10T15:07:35.658876 + + + COLRv1 Static Test Glyphs Regular + + + 2023-03-10T15:07:35.658876 + + + COLRv1StaticTestGlyphs-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ttLib/tables/data/COLRv1-clip-boxes-q1-expected.ttx b/Tests/ttLib/tables/data/COLRv1-clip-boxes-q1-expected.ttx new file mode 100644 index 000000000..c3b8ef62b --- /dev/null +++ b/Tests/ttLib/tables/data/COLRv1-clip-boxes-q1-expected.ttx @@ -0,0 +1,919 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ttLib/tables/data/COLRv1-clip-boxes-q10-expected.ttx b/Tests/ttLib/tables/data/COLRv1-clip-boxes-q10-expected.ttx new file mode 100644 index 000000000..f6b66f5c6 --- /dev/null +++ b/Tests/ttLib/tables/data/COLRv1-clip-boxes-q10-expected.ttx @@ -0,0 +1,911 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/ttLib/tables/data/COLRv1-clip-boxes-q100-expected.ttx b/Tests/ttLib/tables/data/COLRv1-clip-boxes-q100-expected.ttx new file mode 100644 index 000000000..f4fee78ac --- /dev/null +++ b/Tests/ttLib/tables/data/COLRv1-clip-boxes-q100-expected.ttx @@ -0,0 +1,863 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +