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 @classmethod 23 def setUpClass(cls): 24 with open(CFF_BIN, "rb") as f: 25 cls.cffData = f.read() 26 with open(CFF_TTX, "r") as f: 27 cls.cffXML = strip_ttLibVersion(f.read()).splitlines() 28 29 def test_toXML(self): 30 font = TTFont(sfntVersion="OTTO") 31 cffTable = font["CFF "] = newTable("CFF ") 32 cffTable.decompile(self.cffData, font) 33 out = StringIO() 34 font.saveXML(out) 35 cffXML = strip_ttLibVersion(out.getvalue()).splitlines() 36 self.assertEqual(cffXML, self.cffXML) 37 38 def test_fromXML(self): 39 font = TTFont(sfntVersion="OTTO") 40 font.importXML(CFF_TTX) 41 cffTable = font["CFF "] 42 cffData = cffTable.compile(font) 43 self.assertEqual(cffData, self.cffData) 44 45 46if __name__ == "__main__": 47 import sys 48 49 sys.exit(unittest.main()) 50