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.populateDefaults()
def ensureDecompiled(self):
self.table.ensureDecompiled(recurse=True)
# https://github.com/fonttools/fonttools/pull/2285#issuecomment-834652928
assert len(struct.pack('i', 0)) == 4
@ -596,13 +599,16 @@ class BaseTable(object):
raise AttributeError(attr)
def ensureDecompiled(self):
def ensureDecompiled(self, recurse=False):
reader = self.__dict__.get("reader")
if reader:
del self.reader
font = self.font
del self.font
self.decompile(reader, font)
if recurse:
for subtable in self.iterSubTables():
subtable.ensureDecompiled(recurse)
@classmethod
def getRecordSize(cls, reader):