From edaab1fa2fe53254d2179c2d4c9001d263a5438c Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 23 Oct 2024 22:07:34 +0000 Subject: [PATCH] [subset] Add tests for UVS + cmap14 subsetting. --- Tests/subset/data/cmap14_font1.no_uvs.ttx | 11 + .../data/cmap14_font1.no_uvs_non_default.ttx | 11 + Tests/subset/data/cmap14_font1.ttx | 1101 +++++++++++++++++ Tests/subset/data/cmap14_font1.uvs.ttx | 14 + .../data/cmap14_font1.uvs_non_default.ttx | 14 + Tests/subset/subset_test.py | 21 + 6 files changed, 1172 insertions(+) create mode 100644 Tests/subset/data/cmap14_font1.no_uvs.ttx create mode 100644 Tests/subset/data/cmap14_font1.no_uvs_non_default.ttx create mode 100644 Tests/subset/data/cmap14_font1.ttx create mode 100644 Tests/subset/data/cmap14_font1.uvs.ttx create mode 100644 Tests/subset/data/cmap14_font1.uvs_non_default.ttx diff --git a/Tests/subset/data/cmap14_font1.no_uvs.ttx b/Tests/subset/data/cmap14_font1.no_uvs.ttx new file mode 100644 index 000000000..75bd02842 --- /dev/null +++ b/Tests/subset/data/cmap14_font1.no_uvs.ttx @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tests/subset/data/cmap14_font1.no_uvs_non_default.ttx b/Tests/subset/data/cmap14_font1.no_uvs_non_default.ttx new file mode 100644 index 000000000..48b04de43 --- /dev/null +++ b/Tests/subset/data/cmap14_font1.no_uvs_non_default.ttx @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Tests/subset/data/cmap14_font1.ttx b/Tests/subset/data/cmap14_font1.ttx new file mode 100644 index 000000000..fdb00a4e7 --- /dev/null +++ b/Tests/subset/data/cmap14_font1.ttx @@ -0,0 +1,1101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cmap14_font1 + + + Regular + + + cmap14_font1 + + + cmap14_font1 + + + Version1.0 + + + cmap14_font1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 145 665 rmoveto + -74 -43 -28 -166 -6 -75 -10 -124 21 -220 148 -44 rrcurveto + -11 37 40 7 39 hhcurveto + 6 8 3 4 4 hvcurveto + 69 60 39 31 2 103 1 44 5 43 -4 43 -7 87 -50 217 -88 45 -24 13 -29 1 -28 7 -12 -1 -8 -4 -6 -7 -16 -2 -16 -3 -13 -8 rrcurveto + 122 -50 rmoveto + 97 -69 31 -246 -15 -107 -13 -95 -42 -80 -111 33 -52 16 -30 55 -16 46 -32 98 -1 279 95 68 13 9 18 -2 15 4 1 1 2 1 2 1 14 -2 13 -2 11 -8 rrcurveto + 233 -615 rmoveto + return + + + 175 661 rmoveto + 1 -215 6 -215 1 -215 4 -42 54 3 2 41 -1 216 -6 214 -1 215 -11 35 -42 0 -7 -37 rrcurveto + 325 -661 rmoveto + return + + + 143 536 rmoveto + 59 22 61 39 64 3 78 5 3 -97 -32 -48 -76 -117 -268 -55 -9 -168 -2 -31 11 -30 5 -31 5 -10 5 -5 10 -5 50 -15 58 8 50 1 65 1 66 3 65 1 37 7 0 42 -35 11 rrcurveto + -106 -2 -108 -7 -107 4 -2 18 -8 18 2 17 16 141 259 55 69 117 72 122 -67 142 -156 -40 -52 -14 -48 -26 -51 -19 -40 -14 16 -51 41 8 rrcurveto + 357 -536 rmoveto + return + + + 92 580 rmoveto + 13 6 13 7 14 4 54 16 184 1 9 -81 1 -13 -3 -13 -3 -14 -9 -45 -124 -14 -42 -8 rrcurveto + -2 -2 1 -1 hhcurveto + -2 vlineto + -30 -15 5 -40 35 -4 60 -5 62 -4 47 -43 83 -75 -108 -134 -82 -20 -75 -17 -101 91 -42 -14 -22 -8 -7 -18 10 -21 2 -2 2 -2 1 -2 10 -10 11 -3 10 2 rrcurveto + 2 2 -1 1 hhcurveto + 16 -7 15 -7 15 -7 33 -14 33 -14 35 -7 103 -18 81 94 48 78 51 83 -64 98 -77 36 -4 1 -3 2 -4 2 17 7 16 9 15 12 77 61 -32 107 -79 40 -91 47 -115 -9 -91 -40 rrcurveto + -27 -24 18 -37 36 7 rrcurveto + 408 -580 rmoveto + return + + + 336 627 rmoveto + -73 -94 -78 -92 -70 -97 -32 -45 -39 -39 -2 -56 2 -16 5 -7 14 -7 76 -39 130 16 102 10 -2 -44 -2 -44 -1 -43 4 -42 54 3 2 41 1 45 2 45 2 45 rrcurveto + 6 6 0 1 5 hvcurveto + 41 8 -6 54 -42 -3 rrcurveto + -2 -3 -1 -2 hhcurveto + 4 135 -3 133 -49 127 -2 3 -3 2 -2 2 -6 6 -8 4 -9 -1 rrcurveto + -6 -6 -3 -4 -4 hvcurveto + -2 -1 -1 -1 -1 -1 rrcurveto + -230 -408 rmoveto + 9 14 6 14 9 13 16 24 37 51 17 22 48 64 50 62 50 62 29 -105 1 -110 -4 -109 -87 -9 -131 -13 -50 20 rrcurveto + 394 -219 rmoveto + return + + + 41 642 rmoveto + 1 -2 1 -1 -1 vvcurveto + -7 2 -7 5 -5 vhcurveto + 15 -69 -71 -105 61 -45 71 -50 214 60 48 -116 9 -20 3 -24 -3 -22 -13 -128 -51 -35 -120 -6 -38 -1 -62 -5 -26 34 -29 22 -33 -28 16 -33 39 -51 75 0 59 2 83 5 76 21 49 69 rrcurveto + 25 36 0 48 11 42 19 72 -43 43 -42 45 -62 68 -159 -25 -76 26 -20 43 44 56 -6 66 101 14 102 -5 103 -1 37 7 0 42 -35 11 -109 1 -110 5 -108 -17 rrcurveto + -1 1 0 0 1 vvcurveto + -25 33 -45 -26 18 -38 rrcurveto + 407 -673 rmoveto + return + + + 399 660 rmoveto + -36 2 -37 10 -35 -8 -152 -32 -56 -137 -37 -134 -35 -130 55 -175 141 -42 156 -46 135 253 -64 123 -39 78 -32 -3 -81 14 -26 5 -36 -14 -24 -10 -36 -15 -28 -18 -26 -26 19 101 63 130 114 18 rrcurveto + 32 5 31 -8 32 -1 37 7 0 42 -35 11 rrcurveto + -263 -360 rmoveto + 52 57 149 71 42 -110 33 -84 -77 -193 -113 33 -98 30 -29 103 4 92 9 -7 14 -1 14 9 rrcurveto + 401 -299 rmoveto + return + + + 99 610 rmoveto + 63 14 62 -15 64 -2 rrcurveto + 22 23 1 2 22 hvcurveto + -24 -33 -19 -38 -22 -38 -85 -149 -77 -149 -19 -173 4 -37 43 -4 12 34 19 165 74 145 83 142 34 57 25 61 56 36 21 24 -14 30 -32 -2 rrcurveto + -6 -47 -49 -8 -48 hhcurveto + -71 2 -67 15 -70 -17 -40 -14 16 -51 41 8 rrcurveto + 418 -667 rmoveto + return + + + 289 676 rmoveto + -88 12 -105 -100 -7 -86 -1 -23 -10 -26 9 -22 9 -21 8 -23 13 -20 6 -8 8 -7 9 -5 -42 -15 -31 -26 -21 -57 -31 -83 41 -138 89 -34 25 -9 24 -16 27 1 90 2 -6 -5 70 46 rrcurveto + 60 39 -5 113 -8 58 -2 24 -13 22 -9 22 -8 20 -18 15 -15 16 -7 7 -9 4 -9 3 3 5 3 5 3 6 43 84 -21 87 -3 90 -6 20 -17 8 -14 -3 -10 9 -11 8 -13 1 rrcurveto + -12 -364 rmoveto + 2 -2 2 -1 3 -1 12 -4 13 -1 9 -8 26 -18 13 -38 6 -28 24 -103 -43 -94 -120 16 -104 15 -73 140 80 83 31 33 22 -2 42 7 19 -4 19 3 17 7 rrcurveto + 32 196 rmoveto + 2 -48 -9 -48 -33 -37 -30 -34 -85 64 -8 41 -11 56 73 136 70 -23 8 -3 8 -6 7 -6 2 -31 4 -31 2 -30 rrcurveto + 191 -508 rmoveto + return + + + 379 635 rmoveto + -50 16 -48 25 -52 6 -169 23 -32 -255 81 -95 66 -76 -16 4 97 -2 rrcurveto + 6 9 3 4 4 hvcurveto + 21 21 19 16 16 17 8 -65 4 -65 -6 -62 -4 -33 -9 -54 -40 -14 -66 -23 -78 47 -54 20 -40 13 -19 -50 37 -19 46 -17 45 -17 45 -16 31 -11 34 12 32 2 104 6 0 190 -4 62 rrcurveto + -1 36 -5 36 -5 36 -2 23 -4 24 -3 23 13 51 -17 20 19 51 5 16 -4 13 -9 8 15 11 0 23 -20 16 rrcurveto + -72 -84 rmoveto + 2 -34 4 -35 5 -35 -3 -19 -4 -16 -6 -7 -19 -22 -22 -20 -21 -21 -14 1 -14 0 -15 1 -53 58 -34 59 18 84 5 21 15 17 10 18 21 7 21 16 22 -3 41 -5 38 -19 40 -14 rrcurveto + -1 -2 -2 -1 -1 -2 -14 3 -15 -9 -4 -21 rrcurveto + 193 -551 rmoveto + return + + + f75af910 158c838c 828d8387 5d8a7d7a + 4d5ffb37 3afb2878 fb3e8f66 b68797ad + 92c79ac5 9dc3c287 bf99c18f 9d559f55 + a4569e66 bd9e7eb3 0838f74a 65f7516b + f7570892 8c938c93 1e8da478 977a887a + 8d797d8e 7208acfb 50159847 9b489e49 + 61866381 618ca4d2 a8d2a1d4 08f7a1fc + 54150b + + + c0f8f115 78538277 884f8830 a6318e30 + 8e468891 7e480888 8c878c89 1e867b95 + 78a389c9 91f72b8d c3c1a0a0 a49d9aa4 + c7f22be8 2baea298 a39ba6a1 cfc272f6 + 57be799e 71937497 50aa4068 55790871 + 82897396 7d898989 898a8808 b4fba915 + dd8daf97 d367d665 9f323c5c 47625089 + 428593b6 8e9f89c0 89b584b6 84b708f7 + 28f7bd15 ce79b23d 5852564f 3b7f3f7f + 088a8b8a 8a1b8c84 07898b8a 8c8a1e73 + 7b9168aa 86d696bb 96bda779 9179907a + 8d618f61 85608a86 b98ab995 b990a194 + 9e92a008 928a9188 901ebe9d a79ac37d + 08fb36fb 85158f78 90798f78 088c0688 + 9f889e89 9f08f833 fc17150b + + + f83bf8f9 155ea564 b85791fb 5ba649fc + 1bb1fb10 bafb2b70 a9f70734 08879092 + 89911bda 90d09eb3 cc9ba696 a1a29fa4 + a771ac69 7f7e8080 82807d7d 78745176 + 85698168 83688276 9b6e967d a143f70b + 9df7b1f4 ec089e9d aa8ba393 b175b075 + b075b179 a5b86aa4 08d4fcf9 150b + + + cef8ec15 93948c94 1b6efb1f 9efb1d9d + fb200889 0791578a 998e4408 8807838d + 848c848e 89997f97 778a0888 888b8a88 + 1f808787 88848008 8a8b8a8a 891e887c + 8e829680 df3ff75a cbc2e0e8 f724a2f7 + 0e4ef734 81a6729e 79a14dd6 fb1b7c34 + 81088a85 858b851b 62898855 b58708f7 + 9a6b15f7 052b64fb 6f38266a 624c6e54 + 82088e07 84f7455a f743b4f7 42089007 + c991c88a bf5f08f7 3ffccc15 0b + + + bff8fa15 9f36903a 87338957 88678757 + 08857bfb 4392751e 9669b487 a98a08f3 + ecb091f2 1fb49385 c1618820 85215cfb + 019a94c4 8ac48ec4 8daa8dab 8daabd8d + be90bd8c b0928bb5 6896598a 5a865889 + 8ed988d9 7bd908e8 a0f7088b e7799e77 + ab958dab 8a8e8b8e 8a8e869a 85927b8f + 21a3fb2e 88216d08 7a85857f 801a8a88 + 8b888c88 08f854fc fa150b + + + cef90215 90068e6c 7969876d 876b8c7f + 8a61082d 0783808c 7d93828d fb0190fb + 018cfb01 8f61c18e 8db48af5 85f689f6 + d79ad97b d99caa9d 7fb46789 437b4298 + 44818ab6 8cb68db6 088db59e b48cb2f7 + 0287f584 f702a3aa 9d7fb467 89fb0174 + fb0095fb 028f7ba1 7286817b 67858b5a + b38708f8 45fd0215 0b + + + 500 0 rmoveto + return + + + 0b + + + + + + -91 callsubr + -91 callsubr + endchar + + + -107 callsubr + -106 callsubr + endchar + + + -106 callsubr + -107 callsubr + endchar + + + -106 callsubr + -106 callsubr + endchar + + + -106 callsubr + -105 callsubr + endchar + + + -106 callsubr + -104 callsubr + endchar + + + -106 callsubr + -103 callsubr + endchar + + + -106 callsubr + -102 callsubr + endchar + + + -106 callsubr + -101 callsubr + endchar + + + -106 callsubr + -100 callsubr + endchar + + + -106 callsubr + -99 callsubr + endchar + + + -106 callsubr + -98 callsubr + endchar + + + -107 callsubr + -105 callsubr + endchar + + + -105 callsubr + -107 callsubr + endchar + + + -105 callsubr + -106 callsubr + endchar + + + -105 callsubr + -105 callsubr + endchar + + + -105 callsubr + -104 callsubr + endchar + + + -105 callsubr + -103 callsubr + endchar + + + -105 callsubr + -102 callsubr + endchar + + + -105 callsubr + -101 callsubr + endchar + + + -105 callsubr + -100 callsubr + endchar + + + -105 callsubr + -99 callsubr + endchar + + + -105 callsubr + -98 callsubr + endchar + + + -107 callsubr + -104 callsubr + endchar + + + -104 callsubr + -107 callsubr + endchar + + + -104 callsubr + -106 callsubr + endchar + + + -104 callsubr + -105 callsubr + endchar + + + -104 callsubr + -104 callsubr + endchar + + + -104 callsubr + -103 callsubr + endchar + + + -104 callsubr + -102 callsubr + endchar + + + -104 callsubr + -101 callsubr + endchar + + + -104 callsubr + -100 callsubr + endchar + + + -104 callsubr + -99 callsubr + endchar + + + -104 callsubr + -98 callsubr + endchar + + + -107 callsubr + -103 callsubr + endchar + + + -103 callsubr + -107 callsubr + endchar + + + -103 callsubr + -106 callsubr + endchar + + + -103 callsubr + -105 callsubr + endchar + + + -103 callsubr + -104 callsubr + endchar + + + -103 callsubr + -103 callsubr + endchar + + + -103 callsubr + -102 callsubr + endchar + + + -103 callsubr + -101 callsubr + endchar + + + -103 callsubr + -100 callsubr + endchar + + + -103 callsubr + -99 callsubr + endchar + + + -103 callsubr + -98 callsubr + endchar + + + -107 callsubr + -102 callsubr + endchar + + + -102 callsubr + -107 callsubr + endchar + + + -102 callsubr + -106 callsubr + endchar + + + -102 callsubr + -105 callsubr + endchar + + + -102 callsubr + -104 callsubr + endchar + + + -102 callsubr + -103 callsubr + endchar + + + -102 callsubr + -102 callsubr + endchar + + + -102 callsubr + -101 callsubr + endchar + + + -102 callsubr + -100 callsubr + endchar + + + -102 callsubr + -99 callsubr + endchar + + + -102 callsubr + -98 callsubr + endchar + + + -107 callsubr + -101 callsubr + endchar + + + -101 callsubr + -107 callsubr + endchar + + + -101 callsubr + -106 callsubr + endchar + + + -101 callsubr + -105 callsubr + endchar + + + -101 callsubr + -104 callsubr + endchar + + + -101 callsubr + -103 callsubr + endchar + + + -101 callsubr + -102 callsubr + endchar + + + -101 callsubr + -101 callsubr + endchar + + + -101 callsubr + -100 callsubr + endchar + + + -101 callsubr + -99 callsubr + endchar + + + -101 callsubr + -98 callsubr + endchar + + + -107 callsubr + -100 callsubr + endchar + + + -100 callsubr + -107 callsubr + endchar + + + -100 callsubr + -106 callsubr + endchar + + + -100 callsubr + -105 callsubr + endchar + + + -100 callsubr + -104 callsubr + endchar + + + -100 callsubr + -103 callsubr + endchar + + + -100 callsubr + -102 callsubr + endchar + + + -100 callsubr + -101 callsubr + endchar + + + -100 callsubr + -100 callsubr + endchar + + + -100 callsubr + -99 callsubr + endchar + + + -100 callsubr + -98 callsubr + endchar + + + -107 callsubr + -99 callsubr + endchar + + + -99 callsubr + -107 callsubr + endchar + + + -99 callsubr + -106 callsubr + endchar + + + -99 callsubr + -105 callsubr + endchar + + + -99 callsubr + -104 callsubr + endchar + + + -99 callsubr + -103 callsubr + endchar + + + -99 callsubr + -102 callsubr + endchar + + + -99 callsubr + -101 callsubr + endchar + + + -99 callsubr + -100 callsubr + endchar + + + -99 callsubr + -99 callsubr + endchar + + + -99 callsubr + -98 callsubr + endchar + + + -107 callsubr + -98 callsubr + endchar + + + -98 callsubr + -107 callsubr + endchar + + + -98 callsubr + -106 callsubr + endchar + + + -98 callsubr + -105 callsubr + endchar + + + -98 callsubr + -104 callsubr + endchar + + + -98 callsubr + -103 callsubr + endchar + + + -98 callsubr + -102 callsubr + endchar + + + -98 callsubr + -101 callsubr + endchar + + + -98 callsubr + -100 callsubr + endchar + + + -98 callsubr + -99 callsubr + endchar + + + -98 callsubr + -98 callsubr + endchar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/subset/data/cmap14_font1.uvs.ttx b/Tests/subset/data/cmap14_font1.uvs.ttx new file mode 100644 index 000000000..f241c4763 --- /dev/null +++ b/Tests/subset/data/cmap14_font1.uvs.ttx @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Tests/subset/data/cmap14_font1.uvs_non_default.ttx b/Tests/subset/data/cmap14_font1.uvs_non_default.ttx new file mode 100644 index 000000000..07c4ba0cf --- /dev/null +++ b/Tests/subset/data/cmap14_font1.uvs_non_default.ttx @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Tests/subset/subset_test.py b/Tests/subset/subset_test.py index 8fdee83b4..c10c21cc8 100644 --- a/Tests/subset/subset_test.py +++ b/Tests/subset/subset_test.py @@ -938,6 +938,27 @@ class SubsetTest: subsetfont = TTFont(subsetpath) self.expect_ttx(subsetfont, self.getpath("CmapSubsetTest.subset.ttx"), ["cmap"]) + + def test_cmap_format14(self): + fontpath = self.compile_font(self.getpath("cmap14_font1.ttx"), ".otf") + subsetpath = self.temp_path(".otf") + + subset.main([fontpath, "--unicodes=4e05", "--output-file=%s" % subsetpath]) + subsetfont = TTFont(subsetpath) + self.expect_ttx(subsetfont, self.getpath("cmap14_font1.no_uvs.ttx"), ["cmap"]) + + subset.main([fontpath, "--unicodes=4e05,e0100", "--output-file=%s" % subsetpath]) + subsetfont = TTFont(subsetpath) + self.expect_ttx(subsetfont, self.getpath("cmap14_font1.uvs.ttx"), ["cmap"]) + + subset.main([fontpath, "--unicodes=4e10", "--output-file=%s" % subsetpath]) + subsetfont = TTFont(subsetpath) + self.expect_ttx(subsetfont, self.getpath("cmap14_font1.no_uvs_non_default.ttx"), ["cmap"]) + + subset.main([fontpath, "--unicodes=4e10,e0100", "--output-file=%s" % subsetpath]) + subsetfont = TTFont(subsetpath) + self.expect_ttx(subsetfont, self.getpath("cmap14_font1.uvs_non_default.ttx"), ["cmap"]) + @pytest.mark.parametrize("text, n", [("!", 1), ("#", 2)]) def test_GPOS_PairPos_Format2_useClass0(self, text, n): # Check two things related to class 0 ('every other glyph'):