From ddd0f7f40b5cae71271fcfa7b6143066d8e465df Mon Sep 17 00:00:00 2001 From: Garret Rieger Date: Wed, 22 Feb 2023 20:23:34 +0000 Subject: [PATCH] [subset] Add a test for CFF2 instancing. Adds option to disable the fonttools comparison check in the test. This is needed since CFF2 instancing is not yet supported in fonttools. --- test/subset/data/Makefile.am | 1 + test/subset/data/Makefile.sources | 1 + ....retain-all-codepoint.wght=650,CNTR=50.otf | Bin 0 -> 41760 bytes test/subset/data/tests/instantiate_cff2.tests | 14 ++++++++++++ test/subset/generate-expected-outputs.py | 20 ++++++++++-------- test/subset/meson.build | 1 + test/subset/subset_test_suite.py | 13 +++++++----- 7 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 test/subset/data/expected/instantiate_cff2/AdobeVFPrototype.default.retain-all-codepoint.wght=650,CNTR=50.otf create mode 100644 test/subset/data/tests/instantiate_cff2.tests diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index 939d468d6..a76fcef18 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am @@ -60,6 +60,7 @@ EXTRA_DIST += \ expected/full_instance \ expected/instance_feature_variations \ expected/instantiate_glyf \ + expected/instantiate_cff2 \ expected/pin_all_at_default \ expected/instance_no_double_free \ expected/mvar_full_instance \ diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources index 0b64cad30..1df8b16a4 100644 --- a/test/subset/data/Makefile.sources +++ b/test/subset/data/Makefile.sources @@ -51,6 +51,7 @@ TESTS = \ tests/full_instance.tests \ tests/instance_feature_variations.tests \ tests/instantiate_glyf.tests \ + tests/instantiate_cff2.tests \ tests/pin_all_at_default.tests \ tests/instance_no_double_free.tests \ tests/mvar_full_instance.tests \ diff --git a/test/subset/data/expected/instantiate_cff2/AdobeVFPrototype.default.retain-all-codepoint.wght=650,CNTR=50.otf b/test/subset/data/expected/instantiate_cff2/AdobeVFPrototype.default.retain-all-codepoint.wght=650,CNTR=50.otf new file mode 100644 index 0000000000000000000000000000000000000000..c76dabb5924f2c1047ce61b911eee1809da1f764 GIT binary patch literal 41760 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/tests/instantiate_cff2.tests b/test/subset/data/tests/instantiate_cff2.tests new file mode 100644 index 000000000..13c5b5916 --- /dev/null +++ b/test/subset/data/tests/instantiate_cff2.tests @@ -0,0 +1,14 @@ +FONTS: +AdobeVFPrototype.otf + +PROFILES: +default.txt + +SUBSETS: +* + +INSTANCES: +wght=650,CNTR=50 + +OPTIONS: +no_fonttools diff --git a/test/subset/generate-expected-outputs.py b/test/subset/generate-expected-outputs.py index 53fb774a1..fd0800293 100755 --- a/test/subset/generate-expected-outputs.py +++ b/test/subset/generate-expected-outputs.py @@ -27,9 +27,9 @@ def strip_check_sum (ttx_string): ttx_string, count=1) -def generate_expected_output(input_file, unicodes, profile_flags, instance_flags, output_directory, font_name): +def generate_expected_output(input_file, unicodes, profile_flags, instance_flags, output_directory, font_name, no_fonttools): input_path = input_file - if instance_flags: + if not no_fonttools and instance_flags: instance_path = os.path.join(tempfile.mkdtemp (), font_name) args = ["fonttools", "varLib.instancer", "--no-overlap-flag", @@ -50,12 +50,13 @@ def generate_expected_output(input_file, unicodes, profile_flags, instance_flags "--unicodes=%s" % unicodes, "--output-file=%s" % fonttools_path]) args.extend(profile_flags) - check_call(args) + if not no_fonttools: + check_call(args) - with io.StringIO () as fp: - with TTFont (fonttools_path) as font: - font.saveXML (fp) - fonttools_ttx = strip_check_sum (fp.getvalue ()) + with io.StringIO () as fp: + with TTFont (fonttools_path) as font: + font.saveXML (fp) + fonttools_ttx = strip_check_sum (fp.getvalue ()) harfbuzz_path = os.path.join(tempfile.mkdtemp (), font_name) args = [ @@ -75,7 +76,7 @@ def generate_expected_output(input_file, unicodes, profile_flags, instance_flags font.saveXML (fp) harfbuzz_ttx = strip_check_sum (fp.getvalue ()) - if harfbuzz_ttx != fonttools_ttx: + if not no_fonttools and harfbuzz_ttx != fonttools_ttx: for line in unified_diff (fonttools_ttx.splitlines (1), harfbuzz_ttx.splitlines (1), fonttools_path, harfbuzz_path): sys.stdout.write (line) sys.stdout.flush () @@ -101,6 +102,7 @@ for path in args: for test in test_suite.tests(): unicodes = test.unicodes() font_name = test.get_font_name() + no_fonttools = ("no_fonttools" in test.options) print("Creating subset %s/%s" % (output_directory, font_name)) generate_expected_output(test.font_path, unicodes, test.get_profile_flags(), - test.get_instance_flags(), output_directory, font_name) + test.get_instance_flags(), output_directory, font_name, no_fonttools=no_fonttools) diff --git a/test/subset/meson.build b/test/subset/meson.build index 5c8c1cd26..07c71ad73 100644 --- a/test/subset/meson.build +++ b/test/subset/meson.build @@ -52,6 +52,7 @@ tests = [ '32bit_var_store', 'pin_all_at_default', 'instantiate_glyf', + 'instantiate_cff2', 'full_instance', 'instance_feature_variations', 'instance_no_double_free', diff --git a/test/subset/subset_test_suite.py b/test/subset/subset_test_suite.py index 5ef4de303..3329e3f5a 100644 --- a/test/subset/subset_test_suite.py +++ b/test/subset/subset_test_suite.py @@ -5,11 +5,12 @@ import os # A single test in a subset test suite. Identifies a font # a subsetting profile, and a subset to be cut. class Test: - def __init__(self, font_path, profile_path, subset, instance): + def __init__(self, font_path, profile_path, subset, instance, options): self.font_path = font_path self.profile_path = profile_path self.subset = subset self.instance = instance + self.options = options def unicodes(self): import re @@ -70,6 +71,7 @@ class SubsetTestSuite: self.profiles = [] self.subsets = [] self.instances = [] + self.options = [] self._parse(definition) def get_output_directory(self): @@ -90,11 +92,11 @@ class SubsetTestSuite: for profile in self.profiles: profile = os.path.join(self._base_path(), "profiles", profile) for subset in self.subsets: - if self.instances: + if self.instances: for instance in self.instances: - yield Test(font, profile, subset, instance) + yield Test(font, profile, subset, instance, options=self.options) else: - yield Test(font, profile, subset, "") + yield Test(font, profile, subset, "", options=self.options) def _base_path(self): return os.path.dirname(os.path.dirname(self.test_path)) @@ -104,7 +106,8 @@ class SubsetTestSuite: "FONTS:": self.fonts, "PROFILES:": self.profiles, "SUBSETS:": self.subsets, - "INSTANCES:": self.instances + "INSTANCES:": self.instances, + "OPTIONS:": self.options, } current_destination = None