xref: /aosp_15_r20/external/fonttools/Tests/ttLib/tables/C_F_F_test.py (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
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