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