1*2d1272b8SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*2d1272b8SAndroid Build Coastguard Worker 3*2d1272b8SAndroid Build Coastguard Workerimport os 4*2d1272b8SAndroid Build Coastguard Worker 5*2d1272b8SAndroid Build Coastguard Worker# Parses a single repacking test file. The first line of the file is 6*2d1272b8SAndroid Build Coastguard Worker# the name of the font to use and the remaining lines define the set of 7*2d1272b8SAndroid Build Coastguard Worker# codepoints in the subset. 8*2d1272b8SAndroid Build Coastguard Workerclass RepackTest: 9*2d1272b8SAndroid Build Coastguard Worker 10*2d1272b8SAndroid Build Coastguard Worker def __init__(self, test_path, definition): 11*2d1272b8SAndroid Build Coastguard Worker self.test_path = test_path 12*2d1272b8SAndroid Build Coastguard Worker self.font_name = None 13*2d1272b8SAndroid Build Coastguard Worker self.codepoints = set () 14*2d1272b8SAndroid Build Coastguard Worker self._parse(definition) 15*2d1272b8SAndroid Build Coastguard Worker 16*2d1272b8SAndroid Build Coastguard Worker def font_path(self): 17*2d1272b8SAndroid Build Coastguard Worker return os.path.join (self._base_path (), "fonts", self.font_name) 18*2d1272b8SAndroid Build Coastguard Worker 19*2d1272b8SAndroid Build Coastguard Worker def codepoints_string (self): 20*2d1272b8SAndroid Build Coastguard Worker return ",".join (self.codepoints) 21*2d1272b8SAndroid Build Coastguard Worker 22*2d1272b8SAndroid Build Coastguard Worker def _base_path(self): 23*2d1272b8SAndroid Build Coastguard Worker return os.path.join( 24*2d1272b8SAndroid Build Coastguard Worker os.path.dirname(self.test_path), 25*2d1272b8SAndroid Build Coastguard Worker "../") 26*2d1272b8SAndroid Build Coastguard Worker 27*2d1272b8SAndroid Build Coastguard Worker 28*2d1272b8SAndroid Build Coastguard Worker def _parse(self, definition): 29*2d1272b8SAndroid Build Coastguard Worker lines = definition.splitlines () 30*2d1272b8SAndroid Build Coastguard Worker self.font_name = lines.pop (0) 31*2d1272b8SAndroid Build Coastguard Worker for line in lines: 32*2d1272b8SAndroid Build Coastguard Worker line = line.strip() 33*2d1272b8SAndroid Build Coastguard Worker if not line: 34*2d1272b8SAndroid Build Coastguard Worker continue 35*2d1272b8SAndroid Build Coastguard Worker 36*2d1272b8SAndroid Build Coastguard Worker self.codepoints.add (line) 37