reworked command line options

git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@152 4cde692c-a291-49d1-8350-778aa11640f8
This commit is contained in:
jvr 2001-08-09 23:39:05 +00:00
parent 5808f3ff71
commit 656a6cce4f

View File

@ -1,26 +1,37 @@
#! /usr/bin/env python #! /usr/bin/env python
"""\ """\
usage: %s [-hvb] [-i TrueType-input-file] TTX-file [TrueType-output-file] usage: %s [-hvbf] [-d output-dir] [-i TTF-input-file] [TTX-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 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. 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. This is mostly useful in conjunction with the -s option of ttDump.py.
Options: Options:
-i TrueType-input-file: specify a TT file to be merged with the TTX file(s) -h Help: print this message
-v verbose: messages will be written to stdout about what is being done -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. -b Don't recalc glyph boundig boxes: use the values in the TTX file as-is.
-h help: print this message -d <output-dir> 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 import sys, os, getopt
from fontTools import ttLib 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 verbose = 0
ttInFile = None ttInFile = None
recalcBBoxes = 1 recalcBBoxes = 1
forceOverwrite = 0
outputDir = None
for option, value in options: for option, value in options:
if option == "-i": if option == "-i":
ttInFile = value ttInFile = value
@ -31,32 +42,46 @@ for option, value in options:
sys.exit(0) sys.exit(0)
elif option == "-b": elif option == "-b":
recalcBBoxes = 0 recalcBBoxes = 0
elif option == "-d":
outputDir = value
elif option == "-f":
forceOverwrite = 1
if len(args) == 1: if not args:
xmlPath = args[0]
name, ext = os.path.splitext(xmlPath)
ttPath = name + '.ttf'
elif len(args) == 2:
xmlPath, ttPath = args
else:
print __doc__ % sys.argv[0] print __doc__ % sys.argv[0]
sys.exit(2) sys.exit(2)
if ttInFile and len(args) > 1:
print "Must specify exactly one TTX file (or directory) when using -i"
sys.exit(2)
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) tt = ttLib.TTFont(ttInFile, recalcBBoxes=recalcBBoxes, verbose=verbose)
if os.path.isdir(xmlPath): if os.path.isdir(xmlPath):
import glob import glob
oldDir = os.getcwd() files = glob.glob1(xmlPath, "*.ttx")
os.chdir(xmlPath)
files = glob.glob("*.ttx")
os.chdir(oldDir)
for xmlFile in files: for xmlFile in files:
xmlFile = os.path.join(xmlPath, xmlFile) xmlFile = os.path.join(xmlPath, xmlFile)
tt.importXML(xmlFile) tt.importXML(xmlFile)
else: else:
tt.importXML(xmlPath) tt.importXML(xmlPath)
tt.save(ttPath) tt.save(ttPath)
del tt
if verbose: if verbose:
import time import time
print "%s finished at" % sys.argv[0], time.strftime("%H:%M:%S", time.localtime(time.time())) print "%s finished at" % sys.argv[0], time.strftime("%H:%M:%S", time.localtime(time.time()))