From 3835e299be96e952ccea38b37f7e4288705d35c5 Mon Sep 17 00:00:00 2001 From: Rasmus Andersson Date: Thu, 24 Aug 2017 00:43:12 -0700 Subject: Adds tabular numbers. Closes #10 --- misc/gen-tnum.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 misc/gen-tnum.py (limited to 'misc') diff --git a/misc/gen-tnum.py b/misc/gen-tnum.py new file mode 100755 index 000000000..627a38354 --- /dev/null +++ b/misc/gen-tnum.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +# encoding: utf8 +from __future__ import print_function +import os, sys +from argparse import ArgumentParser +from robofab.objects.objectsRF import OpenFont +from math import ceil, floor + +dryRun = False +numNames = [ + 'zero','one','two','three','four','five','six','seven','eight','nine' +] + + +def main(): + argparser = ArgumentParser( + description='Generate tabular number glyphs from regular number glyphs') + + argparser.add_argument( + '-dry', dest='dryRun', action='store_const', const=True, default=False, + help='Do not modify anything, but instead just print what would happen.') + + argparser.add_argument( + 'fontPaths', metavar='', type=str, nargs='+', help='UFO fonts') + + args = argparser.parse_args() + dryRun = args.dryRun + + # Strip trailing slashes from font paths and iterate + for fontPath in [s.rstrip('/ ') for s in args.fontPaths]: + fontName = os.path.basename(fontPath) + font = OpenFont(fontPath) + + # Find widest glyph + width = 0 + for name in numNames: + g = font[name] + width = max(width, g.width) + + print('[%s] tnums width:' % fontName, width) + + # Create tnum glyphs + for name in numNames: + g = font[name] + + tnum = font.newGlyph(name + '.tnum') + tnum.width = width + print('[%s] gen' % fontName, tnum.name) + + # calculate component x-offset + xoffs = 0 + if g.width != width: + # center shape, ignoring existing margins + # xMin, yMin, xMax, yMax = g.box + # graphicWidth = xMax - xMin + # leftMargin = round((width - graphicWidth) / 2) + # xoffs = leftMargin - g.leftMargin + + # adjust margins + widthDelta = width - g.width + leftMargin = g.leftMargin + int(floor(widthDelta / 2)) + rightMargin = g.rightMargin + int(ceil(widthDelta / 2)) + xoffs = leftMargin - g.leftMargin + + tnum.appendComponent(name, (xoffs, 0)) + + if dryRun: + print('[%s] save [dry run]' % fontName) + else: + print('[%s] save' % fontName) + font.save() + + +if __name__ == '__main__': + main() -- cgit v1.2.3