ttx その2
ttx その2
site-packages/FontTools/fontTools/ttlib/__init__.py def saveXML(self, fileOrPath, progress=None, tables=None, skipTables=None, splitTables=0, disassembleInstructions=1): """Export the font as TTX (an XML-based text file), or as a series of text files when splitTables is true. In the latter case, the 'fileOrPath' argument should be a path to a directory. The 'tables' argument must either be false (dump all tables) or a list of tables to dump. The 'skipTables' argument may be a list of tables to skip, but only when the 'tables' argument is false. """ from fontTools import version import xmlWriter self.disassembleInstructions = disassembleInstructions if not tables: tables = self.keys() <===Selfからtablesへセットされる。 tables list: ['GlyphOrder', 'head', 'hhea', 'maxp', 'OS/2', 'hmtx', 'VDMX', 'cmap', 'loca', 'glyf', 'name', 'post', 'GDEF', 'GPOS', 'GSUB'] if "GlyphOrder" not in tables: <== true tables = ["GlyphOrder"] + tables <== "GlyphOrder"も追加される if skipTables: <== false for tag in skipTables: if tag in tables: tables.remove(tag) numTables = len(tables) <== numTables int: 15 if progress: <== false progress NoneType: None progress.set(0, numTables) idlefunc = getattr(progress, "idle", None) getattr(object, name[, default])(原文) 指定された object の属性を返します。 name は文字列でなくてはなりません。 文字列がオブジェクトの属性名の一つであった場合、 戻り値はその属性の値になります。 例えば、 getattr(x, 'foobar') は x.foobar と等価です。 指定された属性が存在しない場合、 default が与えられている場合にはそれが返されます。 そうでない場合には AttributeError が送出されます。 http://docs.python.jp/2/library/functions.html#getattr else: idlefunc = None <==アイドル中に処理する関数らしい writer = xmlWriter.XMLWriter(fileOrPath, idlefunc=idlefunc) writer.begintag("ttFont", sfntVersion=`self.sfntVersion`[1:-1], ttLibVersion=version) writer.newline() if not splitTables: <== True writer.newline() <== else: # 'fileOrPath' must now be a path path, ext = os.path.splitext(fileOrPath) fileNameTemplate = path + ".%s" + ext for i in range(numTables): <== numTables int: 15 if progress: <== false progress.set(i) tag = tables[i] <== if splitTables: <== false tablePath = fileNameTemplate % tagToIdentifier(tag) tableWriter = xmlWriter.XMLWriter(tablePath, idlefunc=idlefunc) tableWriter.begintag("ttFont", ttLibVersion=version) tableWriter.newline() tableWriter.newline() writer.simpletag(tagToXML(tag), src=os.path.basename(tablePath)) writer.newline() else: tableWriter = writer <==① self._tableToXML(tableWriter, tag, progress) if splitTables: <== false tableWriter.endtag("ttFont") tableWriter.newline() tableWriter.close() if progress: <== false progress.set((i + 1)) writer.endtag("ttFont") writer.newline() writer.close() if self.verbose: debugmsg("Done dumping TTX")
site-packages/FontTools/fontTools/ttlib/__init__.py ① def _tableToXML(self, writer, tag, progress): if self.has_key(tag): table = self[tag] <== 以下のようにしてself.tablesから取ってくる ========================= site-packages/FontTools/fontTools/ttlib/__init__.py def __getitem__(self, tag): try: return self.tables[tag] ========================= report = "Dumping '%s' table..." % tag <== else: report = "No '%s' table found." % tag if progress: <== false progress.setLabel(report) elif self.verbose: <== false debugmsg(report) else: print report <==ここ if not self.has_key(tag): <== false return xmlTag = tagToXML(tag) <== 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()