[sfnt] make SFNTReader.tables an OrderedDict sorted by table offset

Fixes https://github.com/behdad/fonttools/issues/408
This commit is contained in:
Cosimo Lupo 2015-11-13 17:38:50 +00:00
parent 7f5d5454fc
commit 8019069f7c

View File

@ -84,12 +84,13 @@ class SFNTReader(object):
if self.sfntVersion not in ("\x00\x01\x00\x00", "OTTO", "true"): if self.sfntVersion not in ("\x00\x01\x00\x00", "OTTO", "true"):
from fontTools import ttLib from fontTools import ttLib
raise ttLib.TTLibError("Not a TrueType or OpenType font (bad sfntVersion)") raise ttLib.TTLibError("Not a TrueType or OpenType font (bad sfntVersion)")
self.tables = OrderedDict() tables = {}
for i in range(self.numTables): for i in range(self.numTables):
entry = self.DirectoryEntry() entry = self.DirectoryEntry()
entry.fromFile(self.file) entry.fromFile(self.file)
tag = Tag(entry.tag) tag = Tag(entry.tag)
self.tables[tag] = entry tables[tag] = entry
self.tables = OrderedDict(sorted(tables.items(), key=lambda i: i[1].offset))
# Load flavor data if any # Load flavor data if any
if self.flavor == "woff": if self.flavor == "woff":