HarfBuzz text shaping engine
http://harfbuzz.github.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
843 B
37 lines
843 B
4 years ago
|
#!/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)
|