theleagueof / fontship

A font development toolkit and collaborative work flow.
GNU General Public License v3.0
98 stars 7 forks source link

psautohint error when building fonts #134

Open ivo-s opened 3 years ago

ivo-s commented 3 years ago

I am having some trouble building the Libertinus fonts. (one thing is that the Libertinus build script only accepts sfdLib 1.0.8, not 1.1.0, because then it has trouble with from sfdLib.utils import GLYPHCLASS_KEY, MATH_KEY.) There is some trouble with psautohint (see dump below). I tried updating to the git release, updating psautohint to 2.3.0, updating fonttools, but it did not help. I don't know where this error is coming from and it is possible that it isn't a Fontship bug, but I can't track down where it goes wrong. According to the checks, package prerequisities should be satisfied and Fontship compilation goes smoothly, it's only the building that's the problem. I did not manage to get Docker running so I have just been using the compiled Fontship version. Lately it stopped working, so I decided to upgrade from 0.7.2 to 0.7.6, and that's when I started to have this problem.

┏━ Welcome to Fontship ⁨v0.7.6.r5-gf0302d2⁩
┠─ Everything seems to be ship shape, anchors up!
┣━ Building target(s) using ‘make’
┠┄ Starting make job for target: ⁨.fontship/last-commit⁩
┠┄ Starting make job for target: ⁨.fontship/LibertinusSerif-Regular-instance-hinted.otf⁩
┠┄ Starting make job for target: ⁨.fontship/LibertinusSerif-Semibold-instance-hinted.otf⁩
┠┄ Starting make job for target: ⁨.fontship/LibertinusSerif-Bold-instance-hinted.otf⁩
┠┄ Finished make job for target: ⁨.fontship/last-commit⁩
┠┄ Starting make job for target: ⁨.fontship/LibertinusSerif-Italic-instance-hinted.otf⁩
┠┄ Failed make job for target: ⁨.fontship/LibertinusSerif-Italic-instance-hinted.otf⁩
┠┄ Failed make job for target: ⁨.fontship/LibertinusSerif-Bold-instance-hinted.otf⁩
┠┄ Failed make job for target: ⁨.fontship/LibertinusSerif-Regular-instance-hinted.otf⁩
┠┄ Failed make job for target: ⁨.fontship/LibertinusSerif-Semibold-instance-hinted.otf⁩
┖┄ Dumping captured output of ‘make’
usage: psautohint [-h] [-v] [-o PATH [PATH ...]] [-r PATH] [-a] [-w]
usage: psautohint [-h] [-v] [-o PATH [PATH ...]] [-r PATH] [-a] [-w]
[-g GLYPH_LIST | --glyphs-file PATH | -x GLYPH_LIST | --exclude-glyphs-file PATH]
[-g GLYPH_LIST | --glyphs-file PATH | -x GLYPH_LIST | --exclude-glyphs-file PATH]
[-c | --report-only] [--log PATH] [-d] [--no-flex]
[-c | --report-only] [--log PATH] [-d] [--no-flex]
[--no-hint-sub] [--no-zones-stems] [--fontinfo-file PATH]
[--no-hint-sub] [--no-zones-stems] [--fontinfo-file PATH]
[--print-dflt-fddict] [--print-list-fddict] [--doc-fddict]
[--print-dflt-fddict] [--print-list-fddict] [--doc-fddict]
[--info] [--version] [--traceback]
[--info] [--version] [--traceback]
FONT [FONT ...]
FONT [FONT ...]
psautohint: error: the following arguments are required: FONT
psautohint: error: the following arguments are required: FONT
usage: psautohint [-h] [-v] [-o PATH [PATH ...]] [-r PATH] [-a] [-w]
[-g GLYPH_LIST | --glyphs-file PATH | -x GLYPH_LIST | --exclude-glyphs-file PATH]
[-c | --report-only] [--log PATH] [-d] [--no-flex]
[--no-hint-sub] [--no-zones-stems] [--fontinfo-file PATH]
[--print-dflt-fddict] [--print-list-fddict] [--doc-fddict]
[--info] [--version] [--traceback]
FONT [FONT ...]
psautohint: error: the following arguments are required: FONT
usage: psautohint [-h] [-v] [-o PATH [PATH ...]] [-r PATH] [-a] [-w]
[-g GLYPH_LIST | --glyphs-file PATH | -x GLYPH_LIST | --exclude-glyphs-file PATH]
[-c | --report-only] [--log PATH] [-d] [--no-flex]
[--no-hint-sub] [--no-zones-stems] [--fontinfo-file PATH]
[--print-dflt-fddict] [--print-list-fddict] [--doc-fddict]
[--info] [--version] [--traceback]
FONT [FONT ...]
psautohint: error: the following arguments are required: FONT
make: *** [/usr/local/share/fontship/rules/rules.mk:307: .fontship/LibertinusSerif-Italic-instance-hinted.otf] Error 2
make: *** Waiting for unfinished jobs....
make: *** [/usr/local/share/fontship/rules/rules.mk:307: .fontship/LibertinusSerif-Bold-instance-hinted.otf] Error 2
make: *** [/usr/local/share/fontship/rules/rules.mk:307: .fontship/LibertinusSerif-Regular-instance-hinted.otf] Error 2
make: *** [/usr/local/share/fontship/rules/rules.mk:307: .fontship/LibertinusSerif-Semibold-instance-hinted.otf] Error 2
┎┄ End dump
┗━ Fontship run complete
Error: Custom { kind: InvalidInput, error: "Make returned unknown error." }
alerque commented 3 years ago

psautohint has been trouble before, I had to disable it for a while. I thought it was working again –at least for the projects I was checking on which included Libertinus– but I guess I'll have to poke it again. I'm a little confused because it does work for me right now, but I'll still take a gander.

As a temporary stand by you can build without any hinting by turning off the hinting step entirely. Either at the top of fontship.mk or from the CLI pass a Makefile variable that sets HINT=''. The empty value will make it skip the step entirely. No that's not pretty and not meant to be a permanent work around...

$ fontship make -- HINT=''
ivo-s commented 3 years ago

I had to update a bunch of Python packages, maybe the problem's there. Unfortunately, I couldn't trace where the problem is coming from, because I don't know the structure of font compilation.

Thanks for the workaround, but I managed to get Docker working eventually, so I'll be using that for local compilation.