1
1
mirror of https://github.com/rsms/inter.git synced 2024-12-13 12:14:53 +03:00
inter/misc/tools/postprocess_instance_ufo.py
2022-10-15 16:34:57 -07:00

49 lines
1.3 KiB
Python

import sys
import defcon
def ufo_set_wws(ufo):
# Fix missing WWS entries for Display fonts:
# See https://github.com/googlefonts/glyphsLib/issues/820
subfamily = ufo.info.styleName
if subfamily.find("Display") == -1:
return
subfamily = subfamily[len("Display"):].strip()
if subfamily == "":
# "Display" -> "Regular"
subfamily = "Regular"
ufo.info.openTypeNameWWSFamilyName = "Inter Display"
ufo.info.openTypeNameWWSSubfamilyName = subfamily
# See https://github.com/rsms/inter/issues/508
# TODO: Remove when https://github.com/googlefonts/glyphsLib/issues/821 is fixed
def fix_fractional_advance_width(ufo):
for g in ufo:
w = int(round(g.width))
# set twice to work around bug or weird behavior in defcon.
# If we don't do this, then fractional widths with .0 fraction are
# not updated to integer values.
g.width = w + 1
g.width = w
def main(argv):
ufo_file = argv[1]
# TODO: Uncomment when https://github.com/googlefonts/glyphsLib/issues/821 is fixed
# if ufo_file.find("Display") == -1:
# return # skip fonts of "default" family
ufo = defcon.Font(ufo_file)
if ufo_file.find("Display") != -1:
ufo_set_wws(ufo)
fix_fractional_advance_width(ufo)
ufo.save(ufo_file)
if __name__ == '__main__':
main(sys.argv)