[TTFont] changed behaviour of 'reorderTables' argument of save function
Reorder to OT spec recommended order if reorederTables == True (default). Don't reorder if reorderTables == None. Keep the input font original table order if reorderTables == False (and the font has a reader object from which to get the original order).
This commit is contained in:
parent
099c260b36
commit
6ba67ab699
@ -212,11 +212,8 @@ class TTFont(object):
|
|||||||
if "GlyphOrder" in tags:
|
if "GlyphOrder" in tags:
|
||||||
tags.remove("GlyphOrder")
|
tags.remove("GlyphOrder")
|
||||||
numTables = len(tags)
|
numTables = len(tags)
|
||||||
if reorderTables:
|
# write to a temporary stream to allow saving to unseekable streams
|
||||||
import tempfile
|
tmp = BytesIO()
|
||||||
tmp = tempfile.TemporaryFile(prefix="ttx-fonttools")
|
|
||||||
else:
|
|
||||||
tmp = file
|
|
||||||
writer = sfnt.SFNTWriter(tmp, numTables, self.sfntVersion, self.flavor, self.flavorData)
|
writer = sfnt.SFNTWriter(tmp, numTables, self.sfntVersion, self.flavor, self.flavorData)
|
||||||
|
|
||||||
done = []
|
done = []
|
||||||
@ -225,11 +222,25 @@ class TTFont(object):
|
|||||||
|
|
||||||
writer.close()
|
writer.close()
|
||||||
|
|
||||||
if reorderTables:
|
if (reorderTables is None or
|
||||||
|
(reorderTables is False and not hasattr(self, 'reader'))):
|
||||||
|
# don't reorder tables and save as is
|
||||||
|
file.write(tmp.getvalue())
|
||||||
|
tmp.close()
|
||||||
|
else:
|
||||||
|
if reorderTables is False:
|
||||||
|
# sort tables using the original font's order
|
||||||
|
tableOrder = self.reader.keys()
|
||||||
|
else:
|
||||||
|
# use the recommended order from the OpenType specification
|
||||||
|
tableOrder = None
|
||||||
tmp.flush()
|
tmp.flush()
|
||||||
tmp.seek(0)
|
tmp.seek(0)
|
||||||
reorderFontTables(tmp, file)
|
tmp2 = BytesIO()
|
||||||
|
reorderFontTables(tmp, tmp2, tableOrder)
|
||||||
|
file.write(tmp2.getvalue())
|
||||||
tmp.close()
|
tmp.close()
|
||||||
|
tmp2.close()
|
||||||
|
|
||||||
if closeStream:
|
if closeStream:
|
||||||
file.close()
|
file.close()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user