Create subReaders lazily
Should improve memory usage
This commit is contained in:
parent
e84f9fd1b5
commit
c491f45eff
@ -585,8 +585,9 @@ class BaseTable(object):
|
||||
def ensureDecompiled(self):
|
||||
if self.compileStatus != 1:
|
||||
return
|
||||
self.decompile(self.reader, self.font)
|
||||
del self.reader, self.font
|
||||
subReader = self.reader.getSubReader(self.offset)
|
||||
self.decompile(subReader, self.font)
|
||||
del self.reader, self.font, self.offset
|
||||
|
||||
def preCompile(self):
|
||||
pass # used only by the LookupList class
|
||||
|
@ -183,14 +183,13 @@ class Table(Struct):
|
||||
print "*** Warning: offset is not 0, yet suspiciously low (%s). table: %s" \
|
||||
% (offset, self.tableClass.__name__)
|
||||
return None
|
||||
subReader = reader.getSubReader(offset)
|
||||
table = self.tableClass()
|
||||
if lazy:
|
||||
table.reader = subReader
|
||||
table.reader = reader
|
||||
table.offset = offset
|
||||
table.font = font
|
||||
table.compileStatus = 1
|
||||
else:
|
||||
table.decompile(subReader, font)
|
||||
if not lazy:
|
||||
table.ensureDecompiled()
|
||||
return table
|
||||
|
||||
def write(self, writer, font, tableDict, value, repeatIndex=None):
|
||||
@ -222,15 +221,14 @@ class ExtSubTable(Table):
|
||||
offset = reader.readULong()
|
||||
if offset == 0:
|
||||
return None
|
||||
subReader = reader.getSubReader(offset)
|
||||
table = self.tableClass()
|
||||
table.start = subReader.offset
|
||||
if lazy:
|
||||
table.reader = subReader
|
||||
table.start = reader.offset + offset
|
||||
table.reader = reader
|
||||
table.offset = offset
|
||||
table.font = font
|
||||
table.compileStatus = 1
|
||||
else:
|
||||
table.decompile(subReader, font)
|
||||
if not lazy:
|
||||
table.ensureDecompiled()
|
||||
return table
|
||||
|
||||
def write(self, writer, font, tableDict, value, repeatIndex=None):
|
||||
|
Loading…
x
Reference in New Issue
Block a user