BaseTTXConverter: add ensureDecompiled method

to unlazify a whole tree of otTables, recursively
This commit is contained in:
Cosimo Lupo 2022-03-17 12:54:22 +00:00
parent 64dc37fc01
commit ee27b73d7c

View File

@ -108,6 +108,9 @@ class BaseTTXConverter(DefaultTable):
self.table.fromXML(name, attrs, content, font) self.table.fromXML(name, attrs, content, font)
self.table.populateDefaults() self.table.populateDefaults()
def ensureDecompiled(self):
self.table.ensureDecompiled(recurse=True)
# https://github.com/fonttools/fonttools/pull/2285#issuecomment-834652928 # https://github.com/fonttools/fonttools/pull/2285#issuecomment-834652928
assert len(struct.pack('i', 0)) == 4 assert len(struct.pack('i', 0)) == 4
@ -596,13 +599,16 @@ class BaseTable(object):
raise AttributeError(attr) raise AttributeError(attr)
def ensureDecompiled(self): def ensureDecompiled(self, recurse=False):
reader = self.__dict__.get("reader") reader = self.__dict__.get("reader")
if reader: if reader:
del self.reader del self.reader
font = self.font font = self.font
del self.font del self.font
self.decompile(reader, font) self.decompile(reader, font)
if recurse:
for subtable in self.iterSubTables():
subtable.ensureDecompiled(recurse)
@classmethod @classmethod
def getRecordSize(cls, reader): def getRecordSize(cls, reader):