gftools icon indicating copy to clipboard operation
gftools copied to clipboard

[Builder] sometimes fails at OTFautohint step because it tries to build `||` file

Open arrowtype opened this issue 1 year ago • 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

arrowtype avatar Jul 09 '24 18:07 arrowtype

Looks like a quoting problem.

simoncozens avatar Jul 09 '24 18:07 simoncozens

Oh, that would make sense. Just to clarify: are you guessing that the quoting problem is in my config file, or in GFtools?

arrowtype avatar Jul 09 '24 20:07 arrowtype

No, it's in gftools, we're passing a command to another command, and probably mucking up the shell quoting when we do so.

simoncozens avatar Jul 09 '24 20:07 simoncozens

Okay, makes sense. Thanks for the quick response, and for the further explanation!

arrowtype avatar Jul 09 '24 21:07 arrowtype

@arrowtype could you test out #1007? If you have the repo on github, I can do it for you.

m4rc1e avatar Jul 17 '24 12:07 m4rc1e