[Builder] sometimes fails at OTFautohint step because it tries to build `||` file
Opened this issue · 5 comments
I’m not really sure what’s happening here, but I’ve run into the same issue intermittently, so I wanted to report it. It only happens occasionally, and tends to sort itself out with a re-run, so it’s nothing super serious. But, it is a little confusing, and could be a problem worth solving.
Basically, it seems like the GF Builder will occasionally create a file called simply ||
, then try to run it through the OTFautohint step. This doesn’t work, so it gives me the following error:
fontmake --output-path /tmp/tmpm2b7lj3i -o otf -u sources/ufo/instance_ufos/Familyname-Black.ufo.json --filter ... --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter
[24/31] autohintOTF
FAILED: /tmp/tmptz84cwqz
/gftools/bin/python -m gftools.builder.jobrunner otfautohint -o /tmp/tmptz84cwqz /tmp/tmpc31o27cq \|\| otfautohint -o /tmp/tmptz84cwqz /tmp/tmpc31o27cq --no-zones-stems
Command failed:
otfautohint -o /tmp/tmptz84cwqz /tmp/tmpc31o27cq || otfautohint -o /tmp/tmptz84cwqz /tmp/tmpc31o27cq --no-zones-stems
usage: otfautohint [-h] [-v]
[-g GLYPH_LIST | --glyphs-file PATH | -x GLYPH_LIST | --exclude-glyphs-file PATH]
[-m GLYPH_LIST | --overlaps-file PATH | --force-overlap | --force-no-overlap]
[--log PATH] [-p PROCESSES] [--version] [--traceback]
[-o PATH [PATH ...]] [-r PATH] [-b PATH] [-a] [-w] [-k]
[-c | --report-only] [-d] [--no-flex] [--no-hint-sub]
[--no-zones-stems] [--fontinfo-file PATH]
[--ignore-fontinfo]
[--print-list-fddict | --print-all-fddict] [--doc-fontinfo]
[--info] [--max-segments MAX_SEGMENTS] [--test]
[FONT ...]
otfautohint: error: argument -o/--output: /fonts/Familyname/|| is not a valid path to write to.
This has happened for various different fonts, and it generally works itself out if I simply re-run the build. I’m not sure what causes it, but because it works out without any changes from me, I don’t think it’s an issue in my fonts or my config files. As a total guess, maybe it’s something like a race condition, or a random glitch of temporary file naming, or something similar and slightly unpredictable. I mostly just wanted to record it in case others run into this, or in case there’s an obvious solution.
I’m on gftools 0.9.61
, and my current config file looks like this:
familyName: Familyname
buildSmallCap: false
buildStatic: true
buildVariable: false
buildWebfont: false
autohintOTF: true
autohintTTF: true
interpolate: true
outputDir: ./fonts
sources:
- sources/ufo/Familyname.designspace
recipeProvider: googlefonts
recipe:
fonts/variable/FamilynameVariable[wdth].ttf:
- source: sources/ufo/Familyname.designspace
- args: --filter ... --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter
operation: buildVariable
- args: "fix-nonhinting $in $out"
exe: "gftools"
operation: exec
- args: "../scripts/rename-fonts.py $in --new_name 'Familyname Variable' && cp $in $out"
exe: "python3"
operation: exec
Looks like a quoting problem.
Oh, that would make sense. Just to clarify: are you guessing that the quoting problem is in my config file, or in GFtools?
No, it's in gftools, we're passing a command to another command, and probably mucking up the shell quoting when we do so.
Okay, makes sense. Thanks for the quick response, and for the further explanation!
@arrowtype could you test out #1007? If you have the repo on github, I can do it for you.