Ebrahim Byagowi | 8d19907 | 2020-02-19 14:56:55 +0330 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
Garret Rieger | 4cdae91 | 2018-01-26 13:57:48 -0800 | [diff] [blame] | 2 | |
| 3 | # Pre-generates the expected output subset files (via fonttools) for |
| 4 | # specified subset test suite(s). |
| 5 | |
| 6 | import os |
| 7 | import sys |
| 8 | |
| 9 | from subprocess import check_call |
| 10 | from subset_test_suite import SubsetTestSuite |
| 11 | |
| 12 | |
| 13 | def usage(): |
cclauss | b5c12b9 | 2018-12-30 13:07:28 +0100 | [diff] [blame] | 14 | print("Usage: generate-expected-outputs.py <test suite file> ...") |
Garret Rieger | 4cdae91 | 2018-01-26 13:57:48 -0800 | [diff] [blame] | 15 | |
| 16 | |
Garret Rieger | 5241d7f | 2018-02-27 13:15:40 -0800 | [diff] [blame] | 17 | def generate_expected_output(input_file, unicodes, profile_flags, output_path): |
| 18 | args = ["fonttools", "subset", input_file] |
Garret Rieger | 5241d7f | 2018-02-27 13:15:40 -0800 | [diff] [blame] | 19 | args.extend(["--notdef-outline", |
Qunxin Liu | 36a5c04 | 2020-01-21 13:37:28 -0800 | [diff] [blame] | 20 | "--layout-features=*", |
Michiharu Ariza | 66361c7 | 2019-06-05 14:51:04 -0700 | [diff] [blame] | 21 | "--drop-tables+=DSIG,GPOS,GSUB,GDEF", |
Qunxin Liu | 36a5c04 | 2020-01-21 13:37:28 -0800 | [diff] [blame] | 22 | "--drop-tables-=sbix", |
Garret Rieger | 5241d7f | 2018-02-27 13:15:40 -0800 | [diff] [blame] | 23 | "--unicodes=%s" % unicodes, |
| 24 | "--output-file=%s" % output_path]) |
Garret Rieger | c740c86 | 2019-05-16 10:57:33 -0700 | [diff] [blame] | 25 | args.extend(profile_flags) |
Garret Rieger | 5241d7f | 2018-02-27 13:15:40 -0800 | [diff] [blame] | 26 | check_call(args) |
Garret Rieger | 4cdae91 | 2018-01-26 13:57:48 -0800 | [diff] [blame] | 27 | |
| 28 | |
| 29 | args = sys.argv[1:] |
| 30 | if not args: |
| 31 | usage() |
| 32 | |
| 33 | for path in args: |
Ebrahim Byagowi | ad87155 | 2020-05-29 00:11:19 +0430 | [diff] [blame] | 34 | with open(path, mode="r", encoding="utf-8") as f: |
Garret Rieger | 4cdae91 | 2018-01-26 13:57:48 -0800 | [diff] [blame] | 35 | test_suite = SubsetTestSuite(path, f.read()) |
| 36 | output_directory = test_suite.get_output_directory() |
| 37 | |
cclauss | b5c12b9 | 2018-12-30 13:07:28 +0100 | [diff] [blame] | 38 | print("Generating output files for %s" % output_directory) |
Garret Rieger | 4cdae91 | 2018-01-26 13:57:48 -0800 | [diff] [blame] | 39 | for test in test_suite.tests(): |
| 40 | unicodes = test.unicodes() |
| 41 | font_name = test.get_font_name() |
cclauss | b5c12b9 | 2018-12-30 13:07:28 +0100 | [diff] [blame] | 42 | print("Creating subset %s/%s" % (output_directory, font_name)) |
Garret Rieger | 5241d7f | 2018-02-27 13:15:40 -0800 | [diff] [blame] | 43 | generate_expected_output(test.font_path, unicodes, test.get_profile_flags(), |
| 44 | os.path.join(output_directory, |
| 45 | font_name)) |