1"""cffLib_test.py -- unit test for Adobe CFF fonts.""" 2 3from fontTools.ttLib import TTFont, newTable 4from io import StringIO 5import re 6import os 7import unittest 8 9 10CURR_DIR = os.path.abspath(os.path.dirname(os.path.realpath(__file__))) 11DATA_DIR = os.path.join(CURR_DIR, 'data') 12 13CFF_TTX = os.path.join(DATA_DIR, "C_F_F_.ttx") 14CFF_BIN = os.path.join(DATA_DIR, "C_F_F_.bin") 15 16 17def strip_ttLibVersion(string): 18 return re.sub(' ttLibVersion=".*"', '', string) 19 20 21class CFFTableTest(unittest.TestCase): 22 23 @classmethod 24 def setUpClass(cls): 25 with open(CFF_BIN, 'rb') as f: 26 cls.cffData = f.read() 27 with open(CFF_TTX, 'r') as f: 28 cls.cffXML = strip_ttLibVersion(f.read()).splitlines() 29 30 def test_toXML(self): 31 font = TTFont(sfntVersion='OTTO') 32 cffTable = font['CFF '] = newTable('CFF ') 33 cffTable.decompile(self.cffData, font) 34 out = StringIO() 35 font.saveXML(out) 36 cffXML = strip_ttLibVersion(out.getvalue()).splitlines() 37 self.assertEqual(cffXML, self.cffXML) 38 39 def test_fromXML(self): 40 font = TTFont(sfntVersion='OTTO') 41 font.importXML(CFF_TTX) 42 cffTable = font['CFF '] 43 cffData = cffTable.compile(font) 44 self.assertEqual(cffData, self.cffData) 45 46 47if __name__ == "__main__": 48 import sys 49 sys.exit(unittest.main()) 50