refactored saveXML() method
git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@251 4cde692c-a291-49d1-8350-778aa11640f8
This commit is contained in:
parent
4afb257387
commit
fe665777ea
@ -42,7 +42,7 @@ Dumping 'prep' table...
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
#
|
#
|
||||||
# $Id: __init__.py,v 1.28 2002-05-15 07:50:06 jvr Exp $
|
# $Id: __init__.py,v 1.29 2002-05-22 20:15:10 jvr Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@ -186,74 +186,72 @@ class TTFont:
|
|||||||
numGlyphs = self['maxp'].numGlyphs
|
numGlyphs = self['maxp'].numGlyphs
|
||||||
if progress:
|
if progress:
|
||||||
progress.set(0, numTables * numGlyphs)
|
progress.set(0, numTables * numGlyphs)
|
||||||
|
|
||||||
|
writer = xmlWriter.XMLWriter(fileOrPath)
|
||||||
|
writer.begintag("ttFont", sfntVersion=`self.sfntVersion`[1:-1],
|
||||||
|
ttLibVersion=version)
|
||||||
|
writer.newline()
|
||||||
|
|
||||||
if not splitTables:
|
if not splitTables:
|
||||||
writer = xmlWriter.XMLWriter(fileOrPath)
|
|
||||||
writer.begintag("ttFont", sfntVersion=`self.sfntVersion`[1:-1],
|
|
||||||
ttLibVersion=version)
|
|
||||||
writer.newline()
|
|
||||||
writer.newline()
|
writer.newline()
|
||||||
else:
|
else:
|
||||||
# 'fileOrPath' must now be a path
|
# 'fileOrPath' must now be a path
|
||||||
path, ext = os.path.splitext(fileOrPath)
|
path, ext = os.path.splitext(fileOrPath)
|
||||||
fileNameTemplate = path + ".%s" + ext
|
fileNameTemplate = path + ".%s" + ext
|
||||||
collection = xmlWriter.XMLWriter(fileOrPath)
|
|
||||||
collection.begintag("ttFont", sfntVersion=`self.sfntVersion`[1:-1],
|
|
||||||
ttLibVersion=version)
|
|
||||||
collection.newline()
|
|
||||||
|
|
||||||
for i in range(numTables):
|
for i in range(numTables):
|
||||||
tag = tables[i]
|
tag = tables[i]
|
||||||
xmlTag = tagToXML(tag)
|
xmlTag = tagToXML(tag)
|
||||||
if splitTables:
|
if splitTables:
|
||||||
tablePath = fileNameTemplate % tagToIdentifier(tag)
|
tablePath = fileNameTemplate % tagToIdentifier(tag)
|
||||||
writer = xmlWriter.XMLWriter(tablePath)
|
tableWriter = xmlWriter.XMLWriter(tablePath)
|
||||||
writer.begintag("ttFont", ttLibVersion=version)
|
tableWriter.begintag("ttFont", ttLibVersion=version)
|
||||||
|
tableWriter.newline()
|
||||||
|
tableWriter.newline()
|
||||||
|
writer.simpletag(xmlTag, src=os.path.basename(tablePath))
|
||||||
writer.newline()
|
writer.newline()
|
||||||
writer.newline()
|
|
||||||
collection.simpletag(xmlTag, src=os.path.basename(tablePath))
|
|
||||||
collection.newline()
|
|
||||||
if self.has_key(tag):
|
|
||||||
table = self[tag]
|
|
||||||
report = "Dumping '%s' table..." % tag
|
|
||||||
else:
|
else:
|
||||||
report = "No '%s' table found." % tag
|
tableWriter = writer
|
||||||
if progress:
|
self._tableToXML(tableWriter, tag, xmlTag, progress)
|
||||||
progress.setlabel(report)
|
|
||||||
elif self.verbose:
|
|
||||||
debugmsg(report)
|
|
||||||
else:
|
|
||||||
print report
|
|
||||||
if not self.has_key(tag):
|
|
||||||
continue
|
|
||||||
if hasattr(table, "ERROR"):
|
|
||||||
writer.begintag(xmlTag, ERROR="decompilation error")
|
|
||||||
else:
|
|
||||||
writer.begintag(xmlTag)
|
|
||||||
writer.newline()
|
|
||||||
if tag in ("glyf", "CFF "):
|
|
||||||
table.toXML(writer, self, progress)
|
|
||||||
else:
|
|
||||||
table.toXML(writer, self)
|
|
||||||
writer.endtag(xmlTag)
|
|
||||||
writer.newline()
|
|
||||||
writer.newline()
|
|
||||||
if splitTables:
|
if splitTables:
|
||||||
writer.endtag("ttFont")
|
tableWriter.endtag("ttFont")
|
||||||
writer.newline()
|
tableWriter.newline()
|
||||||
writer.close()
|
tableWriter.close()
|
||||||
if progress:
|
if progress:
|
||||||
progress.set(i * numGlyphs, numTables * numGlyphs)
|
progress.set(i * numGlyphs, numTables * numGlyphs)
|
||||||
if not splitTables:
|
writer.endtag("ttFont")
|
||||||
writer.endtag("ttFont")
|
writer.newline()
|
||||||
writer.newline()
|
writer.close()
|
||||||
writer.close()
|
|
||||||
else:
|
|
||||||
collection.endtag("ttFont")
|
|
||||||
collection.newline()
|
|
||||||
collection.close()
|
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
debugmsg("Done dumping TTX")
|
debugmsg("Done dumping TTX")
|
||||||
|
|
||||||
|
def _tableToXML(self, writer, tag, xmlTag, progress):
|
||||||
|
if self.has_key(tag):
|
||||||
|
table = self[tag]
|
||||||
|
report = "Dumping '%s' table..." % tag
|
||||||
|
else:
|
||||||
|
report = "No '%s' table found." % tag
|
||||||
|
if progress:
|
||||||
|
progress.setlabel(report)
|
||||||
|
elif self.verbose:
|
||||||
|
debugmsg(report)
|
||||||
|
else:
|
||||||
|
print report
|
||||||
|
if not self.has_key(tag):
|
||||||
|
return
|
||||||
|
if hasattr(table, "ERROR"):
|
||||||
|
writer.begintag(xmlTag, ERROR="decompilation error")
|
||||||
|
else:
|
||||||
|
writer.begintag(xmlTag)
|
||||||
|
writer.newline()
|
||||||
|
if tag in ("glyf", "CFF "):
|
||||||
|
table.toXML(writer, self, progress)
|
||||||
|
else:
|
||||||
|
table.toXML(writer, self)
|
||||||
|
writer.endtag(xmlTag)
|
||||||
|
writer.newline()
|
||||||
|
writer.newline()
|
||||||
|
|
||||||
def importXML(self, file, progress=None):
|
def importXML(self, file, progress=None):
|
||||||
"""Import a TTX file (an XML-based text format), so as to recreate
|
"""Import a TTX file (an XML-based text format), so as to recreate
|
||||||
a font object.
|
a font object.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user