1#!/usr/bin/env python 2 3# Pre-generates the expected output subset files (via fonttools) for 4# specified subset test suite(s). 5 6from __future__ import print_function, division, absolute_import 7 8import io 9import os 10import sys 11 12from subprocess import check_call 13from subset_test_suite import SubsetTestSuite 14 15 16def usage(): 17 print("Usage: generate-expected-outputs.py <test suite file> ...") 18 19 20def generate_expected_output(input_file, unicodes, profile_flags, output_path): 21 args = ["fonttools", "subset", input_file] 22 args.extend(["--notdef-outline", 23 "--name-languages=*", 24 "--name-legacy", 25 "--layout-features=*", 26 "--drop-tables+=DSIG,GPOS,GSUB,GDEF,gvar,avar,MVAR,HVAR", 27 "--unicodes=%s" % unicodes, 28 "--output-file=%s" % output_path]) 29 args.extend(profile_flags) 30 check_call(args) 31 32 33args = sys.argv[1:] 34if not args: 35 usage() 36 37for path in args: 38 with io.open(path, mode="r", encoding="utf-8") as f: 39 test_suite = SubsetTestSuite(path, f.read()) 40 output_directory = test_suite.get_output_directory() 41 42 print("Generating output files for %s" % output_directory) 43 for test in test_suite.tests(): 44 unicodes = test.unicodes() 45 font_name = test.get_font_name() 46 print("Creating subset %s/%s" % (output_directory, font_name)) 47 generate_expected_output(test.font_path, unicodes, test.get_profile_flags(), 48 os.path.join(output_directory, 49 font_name)) 50