| #!/usr/bin/env python3 | |
| import os | |
| # Parses a single repacking test file. The first line of the file is | |
| # the name of the font to use and the remaining lines define the set of | |
| # codepoints in the subset. | |
| class RepackTest: | |
| def __init__(self, test_path, definition): | |
| self.test_path = test_path | |
| self.font_name = None | |
| self.codepoints = set () | |
| self._parse(definition) | |
| def font_path(self): | |
| return os.path.join (self._base_path (), "fonts", self.font_name) | |
| def codepoints_string (self): | |
| return ",".join (self.codepoints) | |
| def _base_path(self): | |
| return os.path.join( | |
| os.path.dirname(self.test_path), | |
| "../") | |
| def _parse(self, definition): | |
| lines = definition.splitlines () | |
| self.font_name = lines.pop (0) | |
| for line in lines: | |
| line = line.strip() | |
| if not line: | |
| continue | |
| self.codepoints.add (line) |