diff --git a/src/calibre/utils/fonts/sfnt/container.py b/src/calibre/utils/fonts/sfnt/container.py index a634b1a80e..cf207d0bd1 100644 --- a/src/calibre/utils/fonts/sfnt/container.py +++ b/src/calibre/utils/fonts/sfnt/container.py @@ -58,16 +58,21 @@ class Sfnt(object): del self.tables[key] def __iter__(self): - '''Iterate over the table tags in optimal order as per - http://partners.adobe.com/public/developer/opentype/index_recs.html''' - keys = list(self.tables.keys()) - order = {x:i for i, x in enumerate((b'head', b'hhea', b'maxp', b'OS/2', - b'hmtx', b'LTSH', b'VDMX', b'hdmx', b'cmap', b'fpgm', b'prep', - b'cvt ', b'loca', b'glyf', b'CFF ', b'kern', b'name', b'post', - b'gasp', b'PCLT', b'DSIG'))} - keys.sort(key=lambda x:order.get(x, 1000)) - for x in keys: + '''Iterate over the table tags in order.''' + for x in sorted(self.tables.iterkeys()): yield x + # Although the optimal order is not alphabetical, the OTF spec says + # they should be alphabetical, so we stick with that. See + # http://partners.adobe.com/public/developer/opentype/index_recs.html + # for optimal order. + # keys = list(self.tables.iterkeys()) + # order = {x:i for i, x in enumerate((b'head', b'hhea', b'maxp', b'OS/2', + # b'hmtx', b'LTSH', b'VDMX', b'hdmx', b'cmap', b'fpgm', b'prep', + # b'cvt ', b'loca', b'glyf', b'CFF ', b'kern', b'name', b'post', + # b'gasp', b'PCLT', b'DSIG'))} + # keys.sort(key=lambda x:order.get(x, 1000)) + # for x in keys: + # yield x def pop(self, key, default=None): return self.tables.pop(key, default)