From 656a6cce4f877ba556c28331fe38ea0c2d0a1d46 Mon Sep 17 00:00:00 2001 From: jvr Date: Thu, 9 Aug 2001 23:39:05 +0000 Subject: [PATCH] reworked command line options git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@152 4cde692c-a291-49d1-8350-778aa11640f8 --- ttCompile.py | 87 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 31 deletions(-) diff --git a/ttCompile.py b/ttCompile.py index d2136db94..4ef5b8d2c 100644 --- a/ttCompile.py +++ b/ttCompile.py @@ -1,26 +1,37 @@ #! /usr/bin/env python """\ -usage: %s [-hvb] [-i TrueType-input-file] TTX-file [TrueType-output-file] - Translate an TTX file (as output by ttDump.py) to a TrueType font file. - If the TTX-file argument is a directory instead of a file, all files in +usage: %s [-hvbf] [-d output-dir] [-i TTF-input-file] [TTX-file...] + + Translate a TTX file (as output by ttDump) to a TrueType font file. + If a TTX-file argument is a directory instead of a file, all files in that directory ending in '.ttx' will be merged into one TrueType file. This is mostly useful in conjunction with the -s option of ttDump.py. Options: - -i TrueType-input-file: specify a TT file to be merged with the TTX file(s) - -v verbose: messages will be written to stdout about what is being done + -h Help: print this message + -i TrueType-input-file: specify a TT file to be merged with the TTX file. + This option is only valid when at most one TTX file (or directory + containing separated TTX files) is specified. -b Don't recalc glyph boundig boxes: use the values in the TTX file as-is. - -h help: print this message + -d Specify a directory in which the output file(s) + should end up. The directory must exist. + -f Force overwriting existing files. + -v Verbose: messages will be written to stdout about what is being done """ + import sys, os, getopt from fontTools import ttLib -options, args = getopt.getopt(sys.argv[1:], "hvi:b") +options, args = getopt.getopt(sys.argv[1:], "hvbfd:i:") +# default values verbose = 0 ttInFile = None recalcBBoxes = 1 +forceOverwrite = 0 +outputDir = None + for option, value in options: if option == "-i": ttInFile = value @@ -31,32 +42,46 @@ for option, value in options: sys.exit(0) elif option == "-b": recalcBBoxes = 0 + elif option == "-d": + outputDir = value + elif option == "-f": + forceOverwrite = 1 -if len(args) == 1: - xmlPath = args[0] - name, ext = os.path.splitext(xmlPath) - ttPath = name + '.ttf' -elif len(args) == 2: - xmlPath, ttPath = args -else: +if not args: print __doc__ % sys.argv[0] sys.exit(2) -tt = ttLib.TTFont(ttInFile, recalcBBoxes=recalcBBoxes, verbose=verbose) +if ttInFile and len(args) > 1: + print "Must specify exactly one TTX file (or directory) when using -i" + sys.exit(2) -if os.path.isdir(xmlPath): - import glob - oldDir = os.getcwd() - os.chdir(xmlPath) - files = glob.glob("*.ttx") - os.chdir(oldDir) - for xmlFile in files: - xmlFile = os.path.join(xmlPath, xmlFile) - tt.importXML(xmlFile) -else: - tt.importXML(xmlPath) -tt.save(ttPath) -del tt -if verbose: - import time - print "%s finished at" % sys.argv[0], time.strftime("%H:%M:%S", time.localtime(time.time())) + +for xmlPath in args: + path, ext = os.path.splitext(xmlPath) + if outputDir is not None: + fileName = os.path.basename(path) + path = os.path.join(outputDir, fileName) + ttPath = path + '.ttf' + + if not forceOverwrite and os.path.exists(ttPath): + answer = raw_input('Overwrite "%s"? ' % ttPath) + if not answer[:1] in ("Y", "y"): + print "skipped." + continue + + tt = ttLib.TTFont(ttInFile, recalcBBoxes=recalcBBoxes, verbose=verbose) + + if os.path.isdir(xmlPath): + import glob + files = glob.glob1(xmlPath, "*.ttx") + for xmlFile in files: + xmlFile = os.path.join(xmlPath, xmlFile) + tt.importXML(xmlFile) + else: + tt.importXML(xmlPath) + + tt.save(ttPath) + + if verbose: + import time + print "%s finished at" % sys.argv[0], time.strftime("%H:%M:%S", time.localtime(time.time()))