ttx その1
ttx その1
Scripts/ttx def _dummy(): from encodings import latin_1, utf_8, utf_16_be import sys from fontTools import ttx ttx.main(sys.argv[1:]) <===== ①
site-packages/FontTools/fontTools/ttx.py def main(args): jobs, options = parseOptions(args) <=====② try: process(jobs, options) <===== ④ except KeyboardInterrupt: print "(Cancelled.)" except SystemExit: if sys.platform == "win32": waitForKeyPress() else: raise except: if sys.platform == "win32": import traceback traceback.print_exc() waitForKeyPress() else: raise
site-packages/FontTools/fontTools/ttx.py ② def parseOptions(args): try: rawOptions, files = getopt.getopt(args, "ld:o:vht:x:sim:baey:") except getopt.GetoptError: usage() if not files: usage() options = Options(rawOptions, len(files)) <== ③Opetionsになる jobs = [] <== リストになる for input in files: tp = guessFileType(input) <== tp=str:"TTF" if tp in ("OTF", "TTF", "TTC"): <== true extension = ".ttx" <== ここをとおる if options.listTables: <== false action = ttList else: action = ttDump <==ここを通る。ttDumpに決定 elif tp == "TTX": extension = ".ttf" action = ttCompile elif tp == "OTX": extension = ".otf" action = ttCompile else: print 'Unknown file type: "%s"' % input continue if options.outputFile: <== false 次はここを通る output = options.outputFile else: output = makeOutputFileName(input, options.outputDir, extension) <== ここ jobs.append((action, input, output)) <== jobsに3つセットする return jobs, options
Optionsはこれ
site-packages/FontTools/fontTools/ttx.py ③ class Options: listTables = 0 outputDir = None outputFile = None verbose = 0 splitTables = 0 disassembleInstructions = 1 mergeFile = None recalcBBoxes = 1 allowVID = 0 ignoreDecompileErrors = True def __init__(self, rawOptions, numFiles): self.onlyTables = [] self.skipTables = [] self.fontNumber = -1 for option, value in rawOptions: # general options if option == "-h": print __doc__ % version sys.exit(0) elif option == "-d": if not os.path.isdir(value): print "The -d option value must be an existing directory" sys.exit(2) self.outputDir = value elif option == "-o": self.outputFile = value elif option == "-v": self.verbose = 1 # dump options elif option == "-l": self.listTables = 1 elif option == "-t": self.onlyTables.append(value) elif option == "-x": self.skipTables.append(value) elif option == "-s": self.splitTables = 1 elif option == "-i": self.disassembleInstructions = 0 elif option == "-y": self.fontNumber = int(value) # compile options elif option == "-m": self.mergeFile = value elif option == "-b": self.recalcBBoxes = 0 elif option == "-a": self.allowVID = 1 elif option == "-e": self.ignoreDecompileErrors = False if self.onlyTables and self.skipTables: print "-t and -x options are mutually exclusive" sys.exit(2) if self.mergeFile and numFiles > 1: print "Must specify exactly one TTX source file when using -m" sys.exit(2)
site-packages/FontTools/fontTools/ttx.py ④ def process(jobs, options): for action, input, output in jobs: action(input, output, options) <==⑤ 0個めのactionはttdump
site-packages/FontTools/fontTools/ttx.py ⑤ def ttDump(input, output, options): print 'Dumping "%s" to "%s"...' % (input, output) ttf = TTFont(input, 0, verbose=options.verbose, allowVID=options.allowVID, <== TTFontオブジェクトを作成 ignoreDecompileErrors=options.ignoreDecompileErrors, fontNumber=options.fontNumber) ttf.saveXML(output, <==⑥ tables=options.onlyTables, skipTables=options.skipTables, splitTables=options.splitTables, disassembleInstructions=options.disassembleInstructions) ttf.close()