Merge pull request #486 from anthrotype/lazy-file-load
[ttLib] don't load whole input file in memory if 'lazy' is True
This commit is contained in:
commit
6832b56385
@ -159,6 +159,7 @@ class TTFont(object):
|
|||||||
else:
|
else:
|
||||||
# assume "file" is a readable file object
|
# assume "file" is a readable file object
|
||||||
closeStream = False
|
closeStream = False
|
||||||
|
if not self.lazy:
|
||||||
# read input file in memory and wrap a stream around it to allow overwriting
|
# read input file in memory and wrap a stream around it to allow overwriting
|
||||||
tmp = BytesIO(file.read())
|
tmp = BytesIO(file.read())
|
||||||
if hasattr(file, 'name'):
|
if hasattr(file, 'name'):
|
||||||
@ -166,7 +167,8 @@ class TTFont(object):
|
|||||||
tmp.name = file.name
|
tmp.name = file.name
|
||||||
if closeStream:
|
if closeStream:
|
||||||
file.close()
|
file.close()
|
||||||
self.reader = sfnt.SFNTReader(tmp, checkChecksums, fontNumber=fontNumber)
|
file = tmp
|
||||||
|
self.reader = sfnt.SFNTReader(file, checkChecksums, fontNumber=fontNumber)
|
||||||
self.sfntVersion = self.reader.sfntVersion
|
self.sfntVersion = self.reader.sfntVersion
|
||||||
self.flavor = self.reader.flavor
|
self.flavor = self.reader.flavor
|
||||||
self.flavorData = self.reader.flavorData
|
self.flavorData = self.reader.flavorData
|
||||||
@ -183,6 +185,9 @@ class TTFont(object):
|
|||||||
"""
|
"""
|
||||||
from fontTools.ttLib import sfnt
|
from fontTools.ttLib import sfnt
|
||||||
if not hasattr(file, "write"):
|
if not hasattr(file, "write"):
|
||||||
|
if self.lazy and self.reader.file.name == file:
|
||||||
|
raise TTLibError(
|
||||||
|
"Can't overwrite TTFont when 'lazy' attribute is True")
|
||||||
closeStream = 1
|
closeStream = 1
|
||||||
file = open(file, "wb")
|
file = open(file, "wb")
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user