misc/rf-scripts/AdjustWidth.py
This commit is contained in:
parent
dc480de3a9
commit
c203f51290
1 changed files with 45 additions and 27 deletions
|
|
@ -10,48 +10,66 @@ if __name__ == "__main__":
|
|||
print "Resizing glyph margins for %r" % font
|
||||
|
||||
# how much to add or remove from each glyph's margin
|
||||
A = 32
|
||||
A = -8
|
||||
|
||||
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:
|
||||
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
|
||||
#if g.name in ('c', 'e', 'o', 'r', 'j'):
|
||||
# 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:
|
||||
print '"%s": ["error", "misaligned"],' % (g.name)
|
||||
errors += 1
|
||||
continue
|
||||
|
||||
#if g.leftMargin <= 0 or g.rightMargin <= 0:
|
||||
# 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)
|
||||
glyphs.append(g)
|
||||
|
||||
if errors > 0:
|
||||
print "Discarding changes because there were errors"
|
||||
print "Stopping changes because there are errors"
|
||||
else:
|
||||
font.update()
|
||||
|
||||
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()
|
||||
|
||||
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:
|
||||
print "No fonts open"
|
||||
|
||||
|
|
|
|||
Reference in a new issue