Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistently gftools-gen-stat and "compress" swap position in the build order #1015

Open
aaronbell opened this issue Aug 5, 2024 · 1 comment

Comments

@aaronbell
Copy link
Contributor

A client running one of my builder scripts has been encountering an inconsistent issue where the "gftools-gen-stat" command and "compress" commands switch places in the build order. This causes a fail as the variable font has not been saved to the output location before builder tries to compress it to a webfont.

build.ninja:

# buildVariable: Build a variable font from a source file
rule buildVariable
  command = $
      /Users/aaronbell/Documents/CJK/venv/bin/python3.12 $
      -m gftools.builder.jobrunner fontmake --output-path $out -o variable $
      $fontmake_type $in $args $stamp
  description = buildVariable

# fix: Run gftools-fix
rule fix
  command = $
      /Users/aaronbell/Documents/CJK/venv/bin/python3.12 $
      -m gftools.builder.jobrunner gftools-fix-font -o $out $args $in $stamp
  description = fix

# buildStat: Build a STAT table from one or more source files
rule buildSTAT-operation
  command = gftools-gen-stat --out $tempdir $args -- $in && mv $finalfile $
      $out $stamp
rule buildSTAT-postprocess
  command = gftools-gen-stat --inplace $args -- $in $stamp

# compress: Compress to webfont
rule compress
  command = $
      /Users/aaronbell/Documents/CJK/venv/bin/python3.12 $
      -m gftools.builder.jobrunner fonttools ttLib.woff2 compress -o $out $
      $in $stamp
  description = compress
@aaronbell
Copy link
Contributor Author

. venv/bin/activate; gftools builder sources/traditional/configFF.yaml; 
[1/34] instantiateUfo 
fontmake -i CJK FF Bold -o ufo -m merged_ufo/CJKFF.designspace --ufo-structure=json --output-dir merged_ufo/instance_ufos 
[2/34] instantiateUfo 
fontmake -i CJK FF Regular -o ufo -m merged_ufo/CJKFF.designspace --ufo-structure=json --output-dir merged_ufo/instance_ufos 
[3/34] instantiateUfo 
fontmake -i CJK FF Medium -o ufo -m merged_ufo/CJKFF.designspace --ufo-structure=json --output-dir merged_ufo/instance_ufos 
[4/34] instantiateUfo 
fontmake -i CJK FF Light -o ufo -m merged_ufo/CJKFF.designspace --ufo-structure=json --output-dir merged_ufo/instance_ufos 
[5/34] instantiateUfo 
fontmake -i CJK FF Black -o ufo -m merged_ufo/CJKFF.designspace --ufo-structure=json --output-dir merged_ufo/instance_ufos 
[6/34] buildVariable 
fontmake --output-path /var/folders/5p/x3cfp8q94wb3f6x9m4076sf40000gq/T/tmpfv6p2yep -o variable -m merged_ufo/CJKFF.designspace --filter ... --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter 
[7/34] fix 
gftools-fix-font -o ../../fonts/FF/traditional/variable/CJKFF[wght].ttf /var/folders/5p/x3cfp8q94wb3f6x9m4076sf40000gq/T/tmpfv6p2yep 
[8/34] compress 
FAILED: ../../fonts/FF/traditional/webfonts/CJKFF[wght].woff2  
/Users/aaronbell/Documents/CJK-latin-update_20240802TestMakeFile2/venv/bin/python3.12 -m gftools.builder.jobrunner fonttools ttLib.woff2 compress -o '../../fonts/FF/traditional/webfonts/CJKFF[wght].woff2' '../../fonts/FF/traditional/variable/CJKFF[wght].ttf'  
 
Command failed: 
fonttools ttLib.woff2 compress -o ../../fonts/FF/traditional/webfonts/CJKFF[wght].woff2 ../../fonts/FF/traditional/variable/CJKFF[wght].ttf 
 
Processing ../../fonts/FF/traditional/variable/CJKFF[wght].ttf => ../../fonts/FF/traditional/webfonts/CJKFF[wght].woff2 
Traceback (most recent call last): 
  File "/Users/aaronbell/Documents/CJK-latin-update_20240802TestMakeFile2/venv/bin/fonttools", line 8, in <module> 
    sys.exit(main()) 
             ^^^^^^ 
  File "/Users/aaronbell/Documents/CJK-latin-update_20240802TestMakeFile2/venv/lib/python3.12/site-packages/fontTools/__main__.py", line 31, in main 
    runpy.run_module(mod, run_name="__main__") 
  File "<frozen runpy>", line 229, in run_module 
  File "<frozen runpy>", line 88, in _run_code 
  File "/Users/aaronbell/Documents/CJK-latin-update_20240802TestMakeFile2/venv/lib/python3.12/site-packages/fontTools/ttLib/woff2.py", line 1683, in <module> 
    sys.exit(main()) 
             ^^^^^^ 
  File "/Users/aaronbell/Documents/CJK-latin-update_20240802TestMakeFile2/venv/lib/python3.12/site-packages/fontTools/ttLib/woff2.py", line 1677, in main 
    subcommand(**options) 
  File "/Users/aaronbell/Documents/CJK-latin-update_20240802TestMakeFile2/venv/lib/python3.12/site-packages/fontTools/ttLib/woff2.py", line 1516, in compress 
    font = TTFont(input_file, recalcBBoxes=False, recalcTimestamp=False) 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "/Users/aaronbell/Documents/CJK-latin-update_20240802TestMakeFile2/venv/lib/python3.12/site-packages/fontTools/ttLib/ttFont.py", line 150, in __init__ 
    file = open(file, "rb") 
           ^^^^^^^^^^^^^^^^ 
FileNotFoundError: [Errno 2] No such file or directory: '../../fonts/FF/traditional/variable/CJKFF[wght].ttf' 
 
[9/34] gftools-gen-stat --inplace  -- '../../fonts/...4wb3f6x9m4076sf40000gq/T/tmpnib8ejj2.buildStatstamp 
Saving font to ../../fonts/FF/traditional/variable/CJKFF[wght].ttf 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant