From 0ea81677797e2f4df5e514b791c96feb40318756 Mon Sep 17 00:00:00 2001 From: Rasmus Andersson Date: Wed, 23 Oct 2019 18:44:33 -0700 Subject: [PATCH] change fontbuild rename command to apply Google Fonts standard style names with --google-style flag (replaces flag --compact-style) --- misc/fontbuild | 13 ++++++++----- misc/fontbuildlib/name.py | 8 ++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/misc/fontbuild b/misc/fontbuild index 61b599067..3b65def94 100755 --- a/misc/fontbuild +++ b/misc/fontbuild @@ -22,7 +22,7 @@ from glyphsLib.interpolation import apply_instance_data from fontbuildlib import FontBuilder from fontbuildlib.util import mkdirs, loadTTFont from fontbuildlib.info import setFontInfo, updateFontVersion -from fontbuildlib.name import setFamilyName, removeWhitespaceFromStyles +from fontbuildlib.name import setFamilyName, renameStylesGoogleFonts log = logging.getLogger(__name__) @@ -581,10 +581,13 @@ class Main(object): a('-o', '--output', metavar='', help='Output font file. Defaults to input file (overwrite.)') + a('--family', metavar='', help='Rename family to ') - a('--compact-style', action='store_true', - help='Rename style names to CamelCase. e.g. "Extra Bold Italic" -> "ExtraBoldItalic"') + + a('--google-style', action='store_true', + help='Rename style names to Google Fonts standards.') + a('input', metavar='', help='Input font file') @@ -600,9 +603,9 @@ class Main(object): editCount += 1 setFamilyName(font, args.family) - if args.compact_style: + if args.google_style: editCount += 1 - removeWhitespaceFromStyles(font) + renameStylesGoogleFonts(font) if editCount == 0: print("no rename options provided", file=sys.stderr) diff --git a/misc/fontbuildlib/name.py b/misc/fontbuildlib/name.py index c999a243a..c9e36b1ed 100644 --- a/misc/fontbuildlib/name.py +++ b/misc/fontbuildlib/name.py @@ -53,7 +53,7 @@ def getFamilyName(font): return r.toUnicode() -def removeWhitespaceFromStyles(font): +def renameStylesGoogleFonts(font): familyName = getFamilyName(font) # collect subfamily (style) name IDs for variable font's named instances @@ -75,7 +75,11 @@ def removeWhitespaceFromStyles(font): s = removeWhitespace(s) rec.string = s if rid in (SUBFAMILY_NAME,) or rid in vfInstanceSubfamilyNameIds: - rec.string = removeWhitespace(rec.toUnicode()) + s = removeWhitespace(rec.toUnicode()) + if s != "Italic" and s.endswith("Italic"): + # fixup "ExtraBoldItalic" -> "ExtraBold Italic" + s = s[:len(s) - len("Italic")] + " Italic" + rec.string = s # else: ignore standard names unrelated to style