* Replaced all from ...py23 import * with explicit name imports, or removed completely when possible. * Replaced tounicode() with tostr() * Changed all BytesIO ans StringIO imports to from io import ..., replaced all UnicodeIO with StringIO. * Replaced all unichr() with chr() * Misc minor tweaks and fixes
59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
"""cff2Lib_test.py -- unit test for Adobe CFF fonts."""
|
|
|
|
from fontTools.ttLib import TTFont
|
|
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__2.ttx")
|
|
CFF_BIN = os.path.join(DATA_DIR, "C_F_F__2.bin")
|
|
|
|
|
|
def strip_VariableItems(string):
|
|
# ttlib changes with the fontTools version
|
|
string = re.sub(' ttLibVersion=".*"', '', string)
|
|
# head table checksum and mod date changes with each save.
|
|
string = re.sub('<checkSumAdjustment value="[^"]+"/>', '', string)
|
|
string = re.sub('<modified value="[^"]+"/>', '', string)
|
|
return string
|
|
|
|
class CFFTableTest(unittest.TestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
with open(CFF_BIN, 'rb') as f:
|
|
font = TTFont(file=CFF_BIN)
|
|
cffTable = font['CFF2']
|
|
cls.cff2Data = cffTable.compile(font)
|
|
with open(CFF_TTX, 'r') as f:
|
|
cff2XML = f.read()
|
|
cff2XML = strip_VariableItems(cff2XML)
|
|
cls.cff2XML = cff2XML.splitlines()
|
|
|
|
def test_toXML(self):
|
|
font = TTFont(file=CFF_BIN)
|
|
cffTable = font['CFF2']
|
|
cffData = cffTable.compile(font)
|
|
out = StringIO()
|
|
font.saveXML(out)
|
|
cff2XML = out.getvalue()
|
|
cff2XML = strip_VariableItems(cff2XML)
|
|
cff2XML = cff2XML.splitlines()
|
|
self.assertEqual(cff2XML, self.cff2XML)
|
|
|
|
def test_fromXML(self):
|
|
font = TTFont(sfntVersion='OTTO')
|
|
font.importXML(CFF_TTX)
|
|
cffTable = font['CFF2']
|
|
cff2Data = cffTable.compile(font)
|
|
self.assertEqual(cff2Data, self.cff2Data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|