|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
# Pre-generates the expected output subset files (via fonttools) for
|
|
|
|
# specified subset test suite(s).
|
|
|
|
|
|
|
|
from __future__ import print_function, division, absolute_import
|
|
|
|
|
|
|
|
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(profile_flags)
|
|
|
|
args.extend(["--notdef-outline",
|
|
|
|
"--name-IDs=*",
|
|
|
|
"--name-languages=*",
|
|
|
|
"--name-legacy",
|
|
|
|
"--drop-tables+=DSIG,GPOS,GSUB,GDEF",
|
|
|
|
"--unicodes=%s" % unicodes,
|
|
|
|
"--output-file=%s" % output_path])
|
|
|
|
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))
|