googlefonts / googlefonts/fontmake

UX improvement: Missing axis should fail to build unless override with arg

Open
#1,018 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
888
Forks
97
Avg merge
4d 52m
Merged PRs (30d)
1

Description

Today I got a fontmake error during build. I figured, probably something obvious, and it was.

My full build steps and output:

```
$ gftools builder config.yaml;
Location with undefined axis: "wght".
Location with undefined axis: "wght".
Location with undefined axis: "wght".
Location with undefined axis: "wght".
Location with undefined axis: "wght".
Location with undefined axis: "wght".
Location with undefined axis: "wght".
Location with undefined axis: "wght".
Location with undefined axis: "wght".
INFO:GFBuilder:Creating variable fonts from font.designspace
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
WARNING:fontTools.designspaceLib.BaseDocReader:Location with undefined axis: "wght".
INFO:fontmake.font_project:Building variable fonts ./variable_ttf/variable/font.ttf
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'G' does not match the TrueType output glyph. Glyph will have no instructions in the font.
ERROR:ufo2ft.instructionCompiler:The stored hash for glyph 'k' does not match the TrueType output glyph. Glyph will have no instructions in the font.
Traceback (most recent call last):
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/fontmake/font_project.py", line 1146, in run_from_designspace
self._run_from_designspace_interpolatable(
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/fontmake/font_project.py", line 1242, in _run_from_designspace_interpolatable
self.build_variable_fonts(
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/fontmake/font_project.py", line 424, in build_variable_fonts
fonts = ufo2ft.compileVariableTTFs(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/ufo2ft/__init__.py", line 646, in compileVariableTTFs
vfNameToTTFont = varLib.build_many(
^^^^^^^^^^^^^^^^^^
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/fontTools/varLib/__init__.py", line 1104, in build_many
vf = build(
^^^^^^
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/fontTools/varLib/__init__.py", line 1138, in build
ds = load_designspace(designspace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/fontTools/varLib/__init__.py", line 956, in load_designspace
raise VarLibValidationError(
fontTools.varLib.errors.VarLibValidationError: More than one base master found in Designspace.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/bin/gftools", line 10, in
sys.exit(main())
^^^^^^
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/gftools/Lib/gftools/scripts/__init__.py", line 91, in main
mod.main(args[2:])
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/gftools/Lib/gftools/builder/__init__.py", line 672, in main
builder.build()
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/gftools/Lib/gftools/builder/__init__.py", line 207, in build
self.build_variable()
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/gftools/Lib/gftools/builder/__init__.py", line 335, in build_variable
output_files = self.run_fontmake(source, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/gftools/Lib/gftools/builder/__init__.py", line 392, in run_fontmake
FontProject().run_from_designspace(source, **args)
File "/Users/dcrossland/src/github.com/googlefonts/font/sources/Regular/test-Gk/9 Source/venv/lib/python3.11/site-packages/fontmake/font_project.py", line 1161, in run_from_designspace
raise FontmakeError(
fontmake.errors.FontmakeError: In 'font.designspace': Generating fonts from Designspace failed: More than one base master found in Designspace.
$
```

From a cursory look, the designspace file was correct, and the final

fontmake.errors.FontmakeError: In 'font.designspace': Generating fonts from Designspace failed: More than one base master found in Designspace.

was misleading; the semi helpful message at the start, repeated,

Location with undefined axis: "wght"

eventually got me to see that I had

       

but this needed to be

       

Chatting with @behdad he commented that "Just warning and ignoring an unknown axis is not good UX. I guess designers like just commenting out an axis line and compile (Instead of having to comment out all references to the axis as well)"

And @rsheeter suggested, "Maybe we could make it default to hard fail and in the failure tell them a flag they can set to ignore instead?"

So posting this issue to request that :)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.