misc/rf-scripts/AdjustWidth.py

This commit is contained in:
Rasmus Andersson 2018-01-13 17:54:45 -08:00
parent dc480de3a9
commit c203f51290

View file

@ -10,48 +10,66 @@ if __name__ == "__main__":
print "Resizing glyph margins for %r" % font print "Resizing glyph margins for %r" % font
# how much to add or remove from each glyph's margin # how much to add or remove from each glyph's margin
A = 32 A = -8
if font is not None: if font is not None:
errors = 0 # if >0 then changes are discarded # first, check for errors and collect glyphs we should adjust
glyphs = []
ignored = []
errors = 0
for g in font: for g in font:
if g.width < 4:
ignored.append((g.name, 'zero-width'))
continue
# if g.box is None:
# print '"%s": ["ignore", "empty"],' % (g.name)
# continue
# skip glyphs # skip glyphs
#if g.name in ('c', 'e', 'o', 'r', 'j'): #if g.name in ('c', 'e', 'o', 'r', 'j'):
# continue # continue
if g.width < 4:
print '"%s": ["ignore", "zero-width"],' % (g.name)
continue
if g.box is None:
print '"%s": ["ignore", "empty"],' % (g.name)
continue
if g.width % 4 != 0: if g.width % 4 != 0:
print '"%s": ["error", "misaligned"],' % (g.name) print '"%s": ["error", "misaligned"],' % (g.name)
errors += 1 errors += 1
continue continue
#if g.leftMargin <= 0 or g.rightMargin <= 0: glyphs.append(g)
# print '"%s": ["ignore", "zero-or-negative"],' % (g.name)
# continue
leftMargin = int(max(0, g.leftMargin + A))
rightMargin = int(max(0, g.rightMargin + A))
#print '"%s": ["update", %g, %g],' % (g.name, leftMargin, rightMargin)
if 'interui.spaceadjust' in g.lib:
g.lib['interui.width-adjustments'].append(A)
else:
g.lib['interui.width-adjustments'] = [A]
# order of assignment is probably important
g.rightMargin = int(rightMargin)
g.leftMargin = int(leftMargin)
if errors > 0: if errors > 0:
print "Discarding changes because there were errors" print "Stopping changes because there are errors"
else: else:
print '# Result from AdjustWidth.py with A=%g on %s %s' % (
A, font.info.familyName, font.info.styleName)
print '# name => [ (prevLeftMargin, prevRightMargin), (newLeft, newRight) ]'
print 'resized_glyphs = ['
for g in glyphs:
newLeftMargin = int(g.leftMargin + A)
newRightMargin = int(g.rightMargin + A)
print ' "%s": [(%g, %g), (%g, %g)],' % (
g.name, g.leftMargin, g.rightMargin, newLeftMargin, newRightMargin)
# order of assignment is probably important
g.rightMargin = int(newRightMargin)
g.leftMargin = int(newLeftMargin)
print '] # resized_glyphs'
font.update() font.update()
if len(ignored) > 0:
print ''
print '# name => [what, reason]'
print "ignored_glyphs = ["
for t in ignored:
print ' "%s": ["ignore", %r],' % t
print '] # ignored_glyphs'
else: else:
print "No fonts open" print "No fonts open"