diff --git a/test/subset/data/expected/empty_region_vardata/RobotoFlex-Variable.ABC.default.retain-all-codepoint.wght=200-300,opsz=14.iup_optimize.ttf b/test/subset/data/expected/empty_region_vardata/RobotoFlex-Variable.ABC.default.retain-all-codepoint.wght=200-300,opsz=14.iup_optimize.ttf new file mode 100644 index 000000000..cf410fa11 Binary files /dev/null and b/test/subset/data/expected/empty_region_vardata/RobotoFlex-Variable.ABC.default.retain-all-codepoint.wght=200-300,opsz=14.iup_optimize.ttf differ diff --git a/test/subset/data/expected/empty_region_vardata/RobotoFlex-Variable.ABC.default.retain-all-codepoint.wght=400,wdth=100,opsz=14.iup_optimize.ttf b/test/subset/data/expected/empty_region_vardata/RobotoFlex-Variable.ABC.default.retain-all-codepoint.wght=400,wdth=100,opsz=14.iup_optimize.ttf new file mode 100644 index 000000000..391e939e5 Binary files /dev/null and b/test/subset/data/expected/empty_region_vardata/RobotoFlex-Variable.ABC.default.retain-all-codepoint.wght=400,wdth=100,opsz=14.iup_optimize.ttf differ diff --git a/test/subset/data/expected/feature_variation_instance_collect_lookups/AnekBangla-question-subset.default.retain-all-codepoint.wdth=112.5.iup_optimize.ttf b/test/subset/data/expected/feature_variation_instance_collect_lookups/AnekBangla-question-subset.default.retain-all-codepoint.wdth=112.5.iup_optimize.ttf new file mode 100644 index 000000000..8cf54c82a Binary files /dev/null and b/test/subset/data/expected/feature_variation_instance_collect_lookups/AnekBangla-question-subset.default.retain-all-codepoint.wdth=112.5.iup_optimize.ttf differ diff --git a/test/subset/data/expected/feature_variations_partial_instance/NotoSansOriya-subset.default.retain-all-codepoint.wdth=75.iup_optimize.ttf b/test/subset/data/expected/feature_variations_partial_instance/NotoSansOriya-subset.default.retain-all-codepoint.wdth=75.iup_optimize.ttf new file mode 100644 index 000000000..c88d0a5e5 Binary files /dev/null and b/test/subset/data/expected/feature_variations_partial_instance/NotoSansOriya-subset.default.retain-all-codepoint.wdth=75.iup_optimize.ttf differ diff --git a/test/subset/data/expected/feature_variations_partial_instance/NotoSansOriya-subset.keep-all-layout-features.retain-all-codepoint.wdth=75.iup_optimize.ttf b/test/subset/data/expected/feature_variations_partial_instance/NotoSansOriya-subset.keep-all-layout-features.retain-all-codepoint.wdth=75.iup_optimize.ttf new file mode 100644 index 000000000..5f2d07523 Binary files /dev/null and b/test/subset/data/expected/feature_variations_partial_instance/NotoSansOriya-subset.keep-all-layout-features.retain-all-codepoint.wdth=75.iup_optimize.ttf differ diff --git a/test/subset/data/expected/gdef_partial_instance/AnekBangla-subset.default.retain-all-codepoint.wght=300.iup_optimize.ttf b/test/subset/data/expected/gdef_partial_instance/AnekBangla-subset.default.retain-all-codepoint.wght=300.iup_optimize.ttf new file mode 100644 index 000000000..a112f90f8 Binary files /dev/null and b/test/subset/data/expected/gdef_partial_instance/AnekBangla-subset.default.retain-all-codepoint.wght=300.iup_optimize.ttf differ diff --git a/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.ABC.default.retain-all-codepoint.wght=200-300-500,wdth=80-90.iup_optimize.ttf b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.ABC.default.retain-all-codepoint.wght=200-300-500,wdth=80-90.iup_optimize.ttf new file mode 100644 index 000000000..b6c373dd2 Binary files /dev/null and b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.ABC.default.retain-all-codepoint.wght=200-300-500,wdth=80-90.iup_optimize.ttf differ diff --git a/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.ABC.default.retain-all-codepoint.wght=300-600,wdth=85.iup_optimize.ttf b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.ABC.default.retain-all-codepoint.wght=300-600,wdth=85.iup_optimize.ttf new file mode 100644 index 000000000..e60233179 Binary files /dev/null and b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.ABC.default.retain-all-codepoint.wght=300-600,wdth=85.iup_optimize.ttf differ diff --git a/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.composite.default.retain-all-codepoint.wght=200-300-500,wdth=80-90.iup_optimize.ttf b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.composite.default.retain-all-codepoint.wght=200-300-500,wdth=80-90.iup_optimize.ttf new file mode 100644 index 000000000..15c3ddf1c Binary files /dev/null and b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.composite.default.retain-all-codepoint.wght=200-300-500,wdth=80-90.iup_optimize.ttf differ diff --git a/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.composite.default.retain-all-codepoint.wght=300-600,wdth=85.iup_optimize.ttf b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.composite.default.retain-all-codepoint.wght=300-600,wdth=85.iup_optimize.ttf new file mode 100644 index 000000000..2c3bc8e4e Binary files /dev/null and b/test/subset/data/expected/glyf_partial_instancing/Roboto-Variable.composite.default.retain-all-codepoint.wght=300-600,wdth=85.iup_optimize.ttf differ diff --git a/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=200-600,wdth=80-90,CTGR=20-60.iup_optimize.ttf b/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=200-600,wdth=80-90,CTGR=20-60.iup_optimize.ttf new file mode 100644 index 000000000..57b33d128 Binary files /dev/null and b/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=200-600,wdth=80-90,CTGR=20-60.iup_optimize.ttf differ diff --git a/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=300-600.iup_optimize.ttf b/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=300-600.iup_optimize.ttf new file mode 100644 index 000000000..a832005b2 Binary files /dev/null and b/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=300-600.iup_optimize.ttf differ diff --git a/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=500-800.iup_optimize.ttf b/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=500-800.iup_optimize.ttf new file mode 100644 index 000000000..258c56a23 Binary files /dev/null and b/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=500-800.iup_optimize.ttf differ diff --git a/test/subset/data/expected/sync_vmetrics/playwrite_mm.subset.default.retain-all-codepoint.SPED=25,YEXT=520,wght=100-400,slnt=18.iup_optimize.ttf b/test/subset/data/expected/sync_vmetrics/playwrite_mm.subset.default.retain-all-codepoint.SPED=25,YEXT=520,wght=100-400,slnt=18.iup_optimize.ttf new file mode 100644 index 000000000..5311eb0eb Binary files /dev/null and b/test/subset/data/expected/sync_vmetrics/playwrite_mm.subset.default.retain-all-codepoint.SPED=25,YEXT=520,wght=100-400,slnt=18.iup_optimize.ttf differ diff --git a/test/subset/data/expected/update_def_wght/SourceSerifVariable-Roman.default.retain-all-codepoint.wght=300-600.iup_optimize.ttf b/test/subset/data/expected/update_def_wght/SourceSerifVariable-Roman.default.retain-all-codepoint.wght=300-600.iup_optimize.ttf new file mode 100644 index 000000000..3f86e2cf6 Binary files /dev/null and b/test/subset/data/expected/update_def_wght/SourceSerifVariable-Roman.default.retain-all-codepoint.wght=300-600.iup_optimize.ttf differ diff --git a/test/subset/data/expected/update_def_wght/SourceSerifVariable-Roman.default.retain-all-codepoint.wght=500-800.iup_optimize.ttf b/test/subset/data/expected/update_def_wght/SourceSerifVariable-Roman.default.retain-all-codepoint.wght=500-800.iup_optimize.ttf new file mode 100644 index 000000000..cdb7567fb Binary files /dev/null and b/test/subset/data/expected/update_def_wght/SourceSerifVariable-Roman.default.retain-all-codepoint.wght=500-800.iup_optimize.ttf differ diff --git a/test/subset/data/expected/value_format_partial_instance/NotoSansOriya-valueformat-subset.default.retain-all-codepoint.wght=400.iup_optimize.ttf b/test/subset/data/expected/value_format_partial_instance/NotoSansOriya-valueformat-subset.default.retain-all-codepoint.wght=400.iup_optimize.ttf new file mode 100644 index 000000000..b4a6ab74f Binary files /dev/null and b/test/subset/data/expected/value_format_partial_instance/NotoSansOriya-valueformat-subset.default.retain-all-codepoint.wght=400.iup_optimize.ttf differ diff --git a/test/subset/data/expected/value_format_partial_instance/NotoSansOriya-valueformat-subset.drop-hints.retain-all-codepoint.wght=400.iup_optimize.ttf b/test/subset/data/expected/value_format_partial_instance/NotoSansOriya-valueformat-subset.drop-hints.retain-all-codepoint.wght=400.iup_optimize.ttf new file mode 100644 index 000000000..0e1c801f6 Binary files /dev/null and b/test/subset/data/expected/value_format_partial_instance/NotoSansOriya-valueformat-subset.drop-hints.retain-all-codepoint.wght=400.iup_optimize.ttf differ diff --git a/test/subset/data/tests/empty_region_vardata.tests b/test/subset/data/tests/empty_region_vardata.tests index 680a61474..f5299954b 100644 --- a/test/subset/data/tests/empty_region_vardata.tests +++ b/test/subset/data/tests/empty_region_vardata.tests @@ -11,3 +11,6 @@ INSTANCES: wght=400,wdth=100,opsz=14 wght=200:300,opsz=14 +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/feature_variation_instance_collect_lookups.tests b/test/subset/data/tests/feature_variation_instance_collect_lookups.tests index 2c45826e3..b8a74d8fa 100644 --- a/test/subset/data/tests/feature_variation_instance_collect_lookups.tests +++ b/test/subset/data/tests/feature_variation_instance_collect_lookups.tests @@ -9,3 +9,7 @@ SUBSETS: INSTANCES: wdth=112.5 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/feature_variations_partial_instance.tests b/test/subset/data/tests/feature_variations_partial_instance.tests index e7933bce6..0f98e7a5d 100644 --- a/test/subset/data/tests/feature_variations_partial_instance.tests +++ b/test/subset/data/tests/feature_variations_partial_instance.tests @@ -10,3 +10,7 @@ SUBSETS: INSTANCES: wdth=75 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/gdef_partial_instance.tests b/test/subset/data/tests/gdef_partial_instance.tests index caa86f834..17a3a4e0d 100644 --- a/test/subset/data/tests/gdef_partial_instance.tests +++ b/test/subset/data/tests/gdef_partial_instance.tests @@ -9,3 +9,7 @@ SUBSETS: INSTANCES: wght=300 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/glyf_partial_instancing.tests b/test/subset/data/tests/glyf_partial_instancing.tests index 89c00f7f2..ebb4566f1 100644 --- a/test/subset/data/tests/glyf_partial_instancing.tests +++ b/test/subset/data/tests/glyf_partial_instancing.tests @@ -11,3 +11,7 @@ SUBSETS: INSTANCES: wght=300:600,wdth=85 wght=200:300:500,wdth=80:90 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/mvar_partial_instance.tests b/test/subset/data/tests/mvar_partial_instance.tests index 468875692..692d78a49 100644 --- a/test/subset/data/tests/mvar_partial_instance.tests +++ b/test/subset/data/tests/mvar_partial_instance.tests @@ -11,3 +11,7 @@ INSTANCES: wght=300:600 wght=500:800 wght=200:600,wdth=80:90,CTGR=20:60 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/sync_vmetrics.tests b/test/subset/data/tests/sync_vmetrics.tests index 8ad194306..3f1084340 100644 --- a/test/subset/data/tests/sync_vmetrics.tests +++ b/test/subset/data/tests/sync_vmetrics.tests @@ -9,3 +9,7 @@ SUBSETS: INSTANCES: SPED=25,YEXT=520,wght=100:400,slnt=18 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/update_def_wght.tests b/test/subset/data/tests/update_def_wght.tests index ba9ae4fef..13a0e20b9 100644 --- a/test/subset/data/tests/update_def_wght.tests +++ b/test/subset/data/tests/update_def_wght.tests @@ -10,3 +10,7 @@ SUBSETS: INSTANCES: wght=300:600 wght=500:800 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/data/tests/value_format_partial_instance.tests b/test/subset/data/tests/value_format_partial_instance.tests index bd52ffcd2..4d5aae994 100644 --- a/test/subset/data/tests/value_format_partial_instance.tests +++ b/test/subset/data/tests/value_format_partial_instance.tests @@ -10,3 +10,7 @@ SUBSETS: INSTANCES: wght=400 + +IUP_OPTIONS: +Yes +No diff --git a/test/subset/generate-expected-outputs.py b/test/subset/generate-expected-outputs.py index 477d0532a..828d042cc 100755 --- a/test/subset/generate-expected-outputs.py +++ b/test/subset/generate-expected-outputs.py @@ -27,16 +27,17 @@ 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, no_fonttools): +def generate_expected_output(input_file, unicodes, profile_flags, instance_flags, iup_optimize, output_directory, font_name, no_fonttools): input_path = input_file if not no_fonttools and instance_flags: instance_path = os.path.join(tempfile.mkdtemp (), font_name) args = ["fonttools", "varLib.instancer", "--no-overlap-flag", - "--no-recalc-timestamp", - "--no-optimize", - "--output=%s" % instance_path, - input_file] + "--no-recalc-timestamp"] + if not iup_optimize: + args.extend(["--no-optimize",]) + args.extend(["--output=%s" % instance_path, + input_file]) args.extend(instance_flags) check_call(args) input_path = instance_path @@ -75,6 +76,8 @@ def generate_expected_output(input_file, unicodes, profile_flags, instance_flags args.extend(profile_flags) if instance_flags: args.extend(["--instance=%s" % ','.join(instance_flags)]) + if iup_optimize: + args.extend(["--optimize",]) check_call(args) with io.StringIO () as fp: @@ -111,4 +114,4 @@ for path in args: 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, no_fonttools=no_fonttools) + test.get_instance_flags(), test.iup_optimize, output_directory, font_name, no_fonttools=no_fonttools) diff --git a/test/subset/run-tests.py b/test/subset/run-tests.py index db3c042a1..d150c21b3 100755 --- a/test/subset/run-tests.py +++ b/test/subset/run-tests.py @@ -60,6 +60,8 @@ def run_test (test, should_check_ots, preprocess): cli_args.extend (test.get_profile_flags ()) if test.get_instance_flags (): cli_args.extend (["--instance=%s" % ','.join(test.get_instance_flags ())]) + if test.iup_optimize: + cli_args.extend (["--optimize",]) ret = subset_cmd (cli_args) if ret != "success": diff --git a/test/subset/subset_test_suite.py b/test/subset/subset_test_suite.py index b755e4e6b..5c35022db 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, options): + def __init__(self, font_path, profile_path, subset, instance, iup_optimize, options): self.font_path = font_path self.profile_path = profile_path self.subset = subset self.instance = instance + self.iup_optimize = iup_optimize self.options = options def unicodes(self): @@ -29,6 +30,8 @@ class Test: return self.instance else: s = "." + self.instance.replace(':', '-') + if self.iup_optimize: + s += ".iup_optimize" return s def get_profile_flags(self): @@ -79,6 +82,7 @@ class SubsetTestSuite: self.subsets = [] self.instances = [] self.options = [] + self.iup_options = [] self._parse(definition) def get_output_directory(self): @@ -101,9 +105,13 @@ class SubsetTestSuite: for subset in self.subsets: if self.instances: for instance in self.instances: - yield Test(font, profile, subset, instance, options=self.options) + if self.iup_options: + for iup_option in self.iup_options: + yield Test(font, profile, subset, instance, iup_option == 'Yes', options=self.options) + else: + yield Test(font, profile, subset, instance, False, options=self.options) else: - yield Test(font, profile, subset, "", options=self.options) + yield Test(font, profile, subset, "", False, options=self.options) def _base_path(self): return os.path.dirname(os.path.dirname(self.test_path)) @@ -115,6 +123,7 @@ class SubsetTestSuite: "SUBSETS:": self.subsets, "INSTANCES:": self.instances, "OPTIONS:": self.options, + "IUP_OPTIONS:": self.iup_options, } current_destination = None