1
1
mirror of https://github.com/rsms/inter.git synced 2024-11-28 22:13:40 +03:00

workaround for bug in glyphslib/fontmake that generates UFO glyphs with fractional widths. Closes #508

This commit is contained in:
Rasmus Andersson 2022-10-15 16:23:56 -07:00
parent 4fd701d529
commit adf3654b33
2 changed files with 33 additions and 3 deletions

View File

@ -0,0 +1,15 @@
#!/bin/bash
#
# This script finds UFO glyphs with fractional advance width, which is invalid.
# See https://github.com/rsms/inter/issues/508
#
cd "$(dirname "$0")"/../../build/ufo
ADVANCES=$(rg 'advance width'|awk 'BEGIN {FS=" "} {print $2}')
NOTREALLYFLOATS=$((rg '\.0\b'|wc -l) <<< "$ADVANCES")
FLOATS=$((rg '\.\d+'|wc -l) <<< "$ADVANCES")
INTS=$((rg -v '\.'|wc -l) <<< "$ADVANCES")
printf "Total: $((INTS+FLOATS)) (sanity: $(wc -l <<< "$ADVANCES"))\nFloats: $((FLOATS-NOTREALLYFLOATS))\nInts: $((INTS+NOTREALLYFLOATS))\n"
echo "Occurance Fraction"
(rg -o '\.\d{1,12}'|sort|uniq -c) <<< "$ADVANCES"

View File

@ -15,12 +15,27 @@ def ufo_set_wws(ufo):
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:
g.width = round(g.width)
def main(argv):
ufo_file = argv[1]
if ufo_file.find("Display") == -1:
return # skip fonts of "default" family
# 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)
ufo_set_wws(ufo)
if ufo_file.find("Display") != -1:
ufo_set_wws(ufo)
fix_fractional_advance_width(ufo)
ufo.save(ufo_file)