| #!/usr/bin/env python3 |
| |
| # Pre-generates the expected output subset files (via fonttools) for |
| # specified subset test suite(s). |
| |
| import io |
| import os |
| import sys |
| |
| from subprocess import check_call |
| from subset_test_suite import SubsetTestSuite |
| |
| |
| def usage(): |
| print("Usage: generate-expected-outputs.py <test suite file> ...") |
| |
| |
| def generate_expected_output(input_file, unicodes, profile_flags, output_path): |
| args = ["fonttools", "subset", input_file] |
| args.extend(["--notdef-outline", |
| "--layout-features=*", |
| "--drop-tables+=DSIG,GPOS,GSUB,GDEF", |
| "--drop-tables-=sbix", |
| "--unicodes=%s" % unicodes, |
| "--output-file=%s" % output_path]) |
| args.extend(profile_flags) |
| check_call(args) |
| |
| |
| args = sys.argv[1:] |
| if not args: |
| usage() |
| |
| for path in args: |
| with io.open(path, mode="r", encoding="utf-8") as f: |
| test_suite = SubsetTestSuite(path, f.read()) |
| output_directory = test_suite.get_output_directory() |
| |
| print("Generating output files for %s" % output_directory) |
| for test in test_suite.tests(): |
| unicodes = test.unicodes() |
| font_name = test.get_font_name() |
| print("Creating subset %s/%s" % (output_directory, font_name)) |
| generate_expected_output(test.font_path, unicodes, test.get_profile_flags(), |
| os.path.join(output_directory, |
| font_name)) |