From e0ddc58fc2e4e4af5f64b707502e034e5f4128f6 Mon Sep 17 00:00:00 2001 From: jvr Date: Sat, 10 Nov 2012 17:58:30 +0000 Subject: [PATCH] Georg Seifert: fix bug with Apple's kern table format git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@612 4cde692c-a291-49d1-8350-778aa11640f8 --- Lib/fontTools/ttLib/tables/_k_e_r_n.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Lib/fontTools/ttLib/tables/_k_e_r_n.py b/Lib/fontTools/ttLib/tables/_k_e_r_n.py index c19589f4b..77f86cfe8 100644 --- a/Lib/fontTools/ttLib/tables/_k_e_r_n.py +++ b/Lib/fontTools/ttLib/tables/_k_e_r_n.py @@ -15,11 +15,13 @@ class table__k_e_r_n(DefaultTable.DefaultTable): def decompile(self, data, ttFont): version, nTables = struct.unpack(">HH", data[:4]) + apple = False if (len(data) >= 8) and (version == 1): - # AAT Apple's new format. Hm. + # AAT Apple's "new" format. Hm. version, nTables = struct.unpack(">LL", data[:8]) self.version = version / float(0x10000) data = data[8:] + apple = True else: self.version = version data = data[4:] @@ -37,6 +39,7 @@ class table__k_e_r_n(DefaultTable.DefaultTable): subtable = KernTable_format_unkown(version) else: subtable = kern_classes[version]() + subtable.apple = apple subtable.decompile(data[:length], ttFont) self.kernTables.append(subtable) data = data[length:] @@ -47,7 +50,7 @@ class table__k_e_r_n(DefaultTable.DefaultTable): else: nTables = 0 if self.version == 1.0: - # AAT Apple's new format. + # AAT Apple's "new" format. data = struct.pack(">ll", self.version * 0x10000, nTables) else: data = struct.pack(">HH", self.version, nTables) @@ -82,9 +85,14 @@ class table__k_e_r_n(DefaultTable.DefaultTable): class KernTable_format_0: def decompile(self, data, ttFont): - version, length, coverage = struct.unpack(">HHH", data[:6]) + version, length, coverage = (0,0,0) + if not self.apple: + version, length, coverage = struct.unpack(">HHH", data[:6]) + data = data[6:] + else: + version, length, coverage = struct.unpack(">LHH", data[:8]) + data = data[8:] self.version, self.coverage = int(version), int(coverage) - data = data[6:] self.kernTable = kernTable = {}