Adds tabular numbers. Closes #10
This commit is contained in:
parent
87ef797b25
commit
3835e299be
34 changed files with 342 additions and 128 deletions
75
misc/gen-tnum.py
Executable file
75
misc/gen-tnum.py
Executable file
|
|
@ -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='<ufofile>', 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()
|
||||
Reference in a new issue