diff options
author | Rasmus <rasmus@notion.se> | 2022-05-26 21:20:06 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-26 21:20:06 +0300 |
commit | 07960766590650e516a75ce6ceba91b68a5fa551 (patch) | |
tree | f0c82cd40cb68950bf8229d14cbc850fec41e5ba /misc/fontbuild | |
parent | 633839ad550073f9d12e6cea7964a30523974b68 (diff) | |
download | inter-07960766590650e516a75ce6ceba91b68a5fa551.tar.xz |
UPM 2048 and opsz axis (#462)
- UPM is adjusted to 2048
- Additional opsz VF axis (multi master) added which will eventually replace the separate Display family
- New tooling that uses fontmake instead of Inter's own fontbuild toolchain. (The old toolchain is still supported, i.e. `make -f Makefile_v1.make ...`)
Diffstat (limited to 'misc/fontbuild')
-rwxr-xr-x | misc/fontbuild | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/misc/fontbuild b/misc/fontbuild index d51bb48df..68d26d4a4 100755 --- a/misc/fontbuild +++ b/misc/fontbuild @@ -13,6 +13,7 @@ import logging import re import signal import subprocess +import defcon from fontTools.designspaceLib import DesignSpaceDocument from mutatorMath.ufo.document import DesignSpaceDocumentReader @@ -445,7 +446,7 @@ class Main(object): source.styleName = "Thin Italic" source.name = "thinitalic" source.font.info.styleName = source.styleName - else: + elif source.styleName: # name "Black" => "black" source.name = source.styleName.lower().replace(' ', '') @@ -521,8 +522,9 @@ class Main(object): verbose=True ) - designspace = DesignSpaceDocument() - designspace.read(designspace_file) + designspace = DesignSpaceDocument.fromfile(designspace_file) + + master0_ufo = defcon.Font(designspace.sources[0].path) # Generate UFOs for instances instance_weight = dict() @@ -544,29 +546,35 @@ class Main(object): if len(instances) > 0: fatal('unknown style(s): %s' % ', '.join(list(instances))) - ufos = apply_instance_data(designspace_file, instance_files) + ufos = apply_instance_data(designspace, instance_files) # patch ufos (list of defcon.Font instances) italicAngleKey = 'com.schriftgestaltung.customParameter.' +\ 'InstanceDescriptorAsGSInstance.italicAngle' - for font in ufos: + for ufo in ufos: + # set metrics + ufo.info.ascender = master0_ufo.info.ascender + ufo.info.capHeight = master0_ufo.info.capHeight + ufo.info.descender = master0_ufo.info.descender + ufo.info.xHeight = master0_ufo.info.xHeight + # move italicAngle from lib to info - italicAngle = font.lib.get(italicAngleKey) + italicAngle = ufo.lib.get(italicAngleKey) if italicAngle != None: italicAngle = float(italicAngle) - del(font.lib[italicAngleKey]) - font.info.italicAngle = italicAngle + del(ufo.lib[italicAngleKey]) + ufo.info.italicAngle = italicAngle # clear anchors if EXCLUDE_ANCHORS: - for g in font: + for g in ufo: g.clearAnchors() # update font info - weight = instance_weight[basename(font.path)] - setFontInfo(font, weight) + weight = instance_weight[basename(ufo.path)] + setFontInfo(ufo, weight) - font.save() + ufo.save() def checkfont(self, fontfile, q): |