"""cffLib_test.py -- unit test for Adobe CFF fonts.""" from fontTools.ttLib import TTFont, newTable from io import StringIO import re import os import unittest CURR_DIR = os.path.abspath(os.path.dirname(os.path.realpath(__file__))) DATA_DIR = os.path.join(CURR_DIR, 'data') CFF_TTX = os.path.join(DATA_DIR, "C_F_F_.ttx") CFF_BIN = os.path.join(DATA_DIR, "C_F_F_.bin") def strip_ttLibVersion(string): return re.sub(' ttLibVersion=".*"', '', string) class CFFTableTest(unittest.TestCase): @classmethod def setUpClass(cls): with open(CFF_BIN, 'rb') as f: cls.cffData = f.read() with open(CFF_TTX, 'r') as f: cls.cffXML = strip_ttLibVersion(f.read()).splitlines() def test_toXML(self): font = TTFont(sfntVersion='OTTO') cffTable = font['CFF '] = newTable('CFF ') cffTable.decompile(self.cffData, font) out = StringIO() font.saveXML(out) cffXML = strip_ttLibVersion(out.getvalue()).splitlines() self.assertEqual(cffXML, self.cffXML) def test_fromXML(self): font = TTFont(sfntVersion='OTTO') font.importXML(CFF_TTX) cffTable = font['CFF '] cffData = cffTable.compile(font) self.assertEqual(cffData, self.cffData) if __name__ == "__main__": import sys sys.exit(unittest.main())