diff --git a/Tests/ttLib/tables/_k_e_r_n_test.py b/Tests/ttLib/tables/_k_e_r_n_test.py
index f45403ddd..8ab1b1ccf 100644
--- a/Tests/ttLib/tables/_k_e_r_n_test.py
+++ b/Tests/ttLib/tables/_k_e_r_n_test.py
@@ -71,11 +71,25 @@ KERN_VER_0_FMT_UNKNOWN_DATA = deHexStr(
'0000 ' # 14: version=0
'000A ' # 16: length=10
'05 ' # 18: format=5 (format 5 doesn't exist)
- '01 ' # 18: coverage=1
+ '01 ' # 19: coverage=1
'9ABC DEF0 ' # 20: garbage...
)
assert len(KERN_VER_0_FMT_UNKNOWN_DATA) == 24
+KERN_VER_0_FMT_UNKNOWN_XML = [
+ '',
+ '',
+ " ",
+ ' 0000000A 04011234',
+ ' 5678 ',
+ '',
+ '',
+ "",
+ ' 0000000A 05019ABC',
+ ' DEF0 ',
+ '',
+]
+
KERN_VER_1_FMT_UNKNOWN_DATA = deHexStr(
'0001 0000 ' # 0: version=1
'0000 0002 ' # 4: nTables=2
@@ -85,13 +99,27 @@ KERN_VER_1_FMT_UNKNOWN_DATA = deHexStr(
'0000 ' # 14: tupleIndex=0
'1234 5678' # 16: garbage...
'0000 000C ' # 20: length=12
- '00 ' # 18: coverage=0
- '05 ' # 19: format=5 (format 5 doesn't exist)
- '0000 ' # 20: tupleIndex=0
- '9ABC DEF0 ' # 22: garbage...
+ '00 ' # 24: coverage=0
+ '05 ' # 25: format=5 (format 5 doesn't exist)
+ '0000 ' # 26: tupleIndex=0
+ '9ABC DEF0 ' # 28: garbage...
)
assert len(KERN_VER_1_FMT_UNKNOWN_DATA) == 32
+KERN_VER_1_FMT_UNKNOWN_XML = [
+ '',
+ '',
+ " ",
+ ' 0000000C 00040000',
+ ' 12345678 ',
+ '',
+ '',
+ " ",
+ ' 0000000C 00050000',
+ ' 9ABCDEF0 ',
+ '',
+]
+
@pytest.fixture
def font():
@@ -254,7 +282,8 @@ class KernTableTest(object):
else:
coverage = 1
header_fmt = deHexStr(
- "%04X %04X %02X %02X" % (0, st_length, unknown_fmt, coverage))
+ "%04X %04X %02X %02X" % (
+ 0, st_length, unknown_fmt, coverage))
st = KernTable_format_unkown(unknown_fmt)
st.data = header_fmt + deHexStr(kern_data)
kern.kernTables.append(st)
@@ -262,6 +291,49 @@ class KernTableTest(object):
data = kern.compile(font)
assert data == expected
+ @pytest.mark.parametrize(
+ "xml, version, st_length",
+ [
+ (KERN_VER_0_FMT_UNKNOWN_XML, 0, 10),
+ (KERN_VER_1_FMT_UNKNOWN_XML, 1.0, 12),
+ ],
+ ids=["version_0", "version_1"]
+ )
+ def test_fromXML_format_unknown(self, xml, font, version, st_length):
+ kern = newTable("kern")
+ for name, attrs, content in parseXML(xml):
+ kern.fromXML(name, attrs, content, ttFont=font)
+
+ assert kern.version == version
+ assert len(kern.kernTables) == 2
+
+ st0 = kern.kernTables[0]
+ assert st0.format == 4
+ assert len(st0.data) == st_length
+
+ st1 = kern.kernTables[1]
+ assert st1.format == 5
+ assert len(st1.data) == st_length
+
+ @pytest.mark.parametrize(
+ "version", [0, 1.0], ids=["version_0", "version_1"])
+ def test_toXML_format_unknown(self, font, version):
+ kern = newTable("kern")
+ kern.version = version
+ st = KernTable_format_unkown(4)
+ st.data = b"ABCD"
+ kern.kernTables = [st]
+
+ xml = getXML(kern.toXML, font)
+
+ assert xml == [
+ '' % version,
+ '',
+ ' ',
+ ' 41424344 ',
+ '',
+ ]
+
def test_getkern(self):
table = newTable("kern")
table.version = 0