diff --git a/Lib/fontTools/ttLib/tables/_m_e_t_a.py b/Lib/fontTools/ttLib/tables/_m_e_t_a.py index de5442045..2cd479c9a 100644 --- a/Lib/fontTools/ttLib/tables/_m_e_t_a.py +++ b/Lib/fontTools/ttLib/tables/_m_e_t_a.py @@ -85,7 +85,11 @@ class table__m_e_t_a(DefaultTable.DefaultTable): else: writer.begintag("hexdata", tag=tag) writer.newline() - writer.dumphex(self.data[tag]) + data = self.data[tag] + if min(data) >= 0x20 and max(data) <= 0x7E: + writer.comment("ascii: " + data.decode("ascii")) + writer.newline() + writer.dumphex(data) writer.endtag("hexdata") writer.newline() diff --git a/Tests/ttLib/tables/_m_e_t_a_test.py b/Tests/ttLib/tables/_m_e_t_a_test.py index 4f0a41589..3a4f2f5b2 100644 --- a/Tests/ttLib/tables/_m_e_t_a_test.py +++ b/Tests/ttLib/tables/_m_e_t_a_test.py @@ -58,6 +58,19 @@ class MetaTableTest(unittest.TestCase): '' ], [line.strip() for line in xml.splitlines()][1:]) + def test_toXML_ascii_data(self): + table = table__m_e_t_a() + table.data["TEST"] = b"Hello!" + writer = XMLWriter(BytesIO()) + table.toXML(writer, {"meta": table}) + xml = writer.file.getvalue().decode("utf-8") + self.assertEqual([ + '', + '', + '48656c6c 6f21', + '' + ], [line.strip() for line in xml.splitlines()][1:]) + def test_fromXML(self): table = table__m_e_t_a() for name, attrs, content in parseXML(