Build issues to debug for v1.086
Following my own build instructions, I run into issues in prepping the variable font build:
Traceback (most recent call last):
File "/Users/stephennixon/type-repos/recursive/mastering/build.py", line 5, in <module>
from build_files import buildFiles, getFolders
File "/Users/stephennixon/type-repos/recursive/mastering/build_files.py", line 4, in <module>
from prep_fonts import prep, copyFiles
File "/Users/stephennixon/type-repos/recursive/mastering/prep_fonts.py", line 6, in <module>
from designspaceProblems import DesignSpaceChecker
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/designspaceProblems/__init__.py", line 10, in <module>
from ufoProcessor.ufoOperator import UFOOperator
ModuleNotFoundError: No module named 'ufoProcessor.ufoOperator'
Traceback (most recent call last):
File "/Users/stephennixon/type-repos/recursive/mastering/build.py", line 5, in <module>
from build_files import buildFiles, getFolders
File "/Users/stephennixon/type-repos/recursive/mastering/build_files.py", line 4, in <module>
from prep_fonts import prep, copyFiles
File "/Users/stephennixon/type-repos/recursive/mastering/prep_fonts.py", line 6, in <module>
from designspaceProblems import DesignSpaceChecker
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/designspaceProblems/__init__.py", line 10, in <module>
from ufoProcessor.ufoOperator import UFOOperator
ModuleNotFoundError: No module named 'ufoProcessor.ufoOperator'
Iβll debug it and keep notes here.
Okay, that first issue was solved by pip installing ufoProcessor directly from its repo.
Now, onto new issues!
Current blocker:
version=1.086 # (replace version number)
python build.py --varfiles --version $version
python build.py --variable --version $version
π Building files for mastering
π Generating sources
π Copying files
π Opening sources
π Checking family name
π Removing non-exporting glyphs
π Decomposing scaled, flipped, and nested components
π Clearing guides
π Removing glyphs that aren't in every font
π Removing non-compatible glyphs
π Making kerning compatible
π Sorting glyph order to be common
π Setting production names
π Setting version
π Closing and saving sources
π Checking full design space
π Writing report
β
Done preparing sources
π Moved features into UFOs
π Added mark, mkmk, and GDEF to features
Exception ignored in: <function UFOOperator.__del__ at 0x107390900>
Traceback (most recent call last):
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/ufoProcessor/ufoOperator.py", line 485, in __del__
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/ufoProcessor/ufoOperator.py", line 490, in changed
AttributeError: 'NoneType' object has no attribute 'keys'
π Constructing variable font
Traceback (most recent call last):
File "/Users/stephennixon/type-repos/recursive/mastering/build.py", line 66, in <module>
build_variable(designspacePath=files["designspace"],
File "/Users/stephennixon/type-repos/recursive/mastering/build_variable.py", line 147, in build_variable
fp.build_variable_font(designspacePath,
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontmake/font_project.py", line 298, in build_variable_font
font = ufo2ft.compileVariableTTF(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/ufo2ft/__init__.py", line 597, in compileVariableTTF
fonts = compileVariableTTFs(designSpaceDoc, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/ufo2ft/__init__.py", line 663, in compileVariableTTFs
vfNameToTTFont = varLib.build_many(
^^^^^^^^^^^^^^^^^^
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/__init__.py", line 1120, in build_many
vf = build(
^^^^^^
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/__init__.py", line 1209, in build
_merge_OTL(vf, model, master_fonts, axisTags)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/__init__.py", line 758, in _merge_OTL
merger.mergeTables(font, master_fonts, ["GSUB", "GDEF", "GPOS"])
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 156, in mergeTables
self.mergeThings(font[tag], [m.get(tag) for m in master_ttfs])
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 1245, in mergeThings
super(VariationMerger, self).mergeThings(out, lst)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 143, in mergeThings
self.mergeObjects(out, lst)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 114, in mergeObjects
mergerFunc(self, value, values)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 1245, in mergeThings
super(VariationMerger, self).mergeThings(out, lst)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 143, in mergeThings
self.mergeObjects(out, lst)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 114, in mergeObjects
mergerFunc(self, value, values)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 1245, in mergeThings
super(VariationMerger, self).mergeThings(out, lst)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 143, in mergeThings
self.mergeObjects(out, lst)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 114, in mergeObjects
mergerFunc(self, value, values)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 1245, in mergeThings
super(VariationMerger, self).mergeThings(out, lst)
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/fontTools/varLib/merger.py", line 148, in mergeThings
raise ShouldBeConstant(self, expected=out, got=lst)
fontTools.varLib.errors.ShouldBeConstant:
Couldn't merge the fonts, because some values were different, but should have
been the same. This happened while performing the following operation:
GPOS.table.FeatureList.FeatureCount
The problem is likely to be in Recursive Mono Casual A Slanted:
Expected to see .FeatureCount==5, instead saw 3
Incompatible features between masters.
Expected: kern, kern, kern, mark, mkmk.
Got: kern, mark, mkmk.
In the varfontprep-report.txt, there is a line saying that kerning is different... This is what Iβll investigate next.
[kerning: kerning group does not match / public.kern1.H_right: ['H', 'Hbrevebelow', 'Hcircumflex', 'Hdotbelow', 'N', 'Nacute', 'Ncaron', 'Ncommaaccent', 'Ndot', 'Ndotbelow', 'Nlinebelow', 'Ntilde', 'U', 'Uacute', 'Ubreve', 'Ucircumflex', 'Udieresis', 'Udotbelow', 'Ugrave', 'Ugravedbl', 'Uhook', 'Uhorn', 'Uhornacute', 'Uhorndot', 'Uhorngrave', 'Uhornhook', 'Uhorntilde', 'Uhungarumlaut', 'Uinvertedbreve', 'Umacron', 'Umacrondieresis', 'Uogonek', 'Uring', 'Utilde', 'Utildeacute', 'Eng', 'LJ', 'NJ', 'Nhookleft', 'd', 'ddotbelow', 'dlinebelow'], ['H', 'Hbrevebelow', 'Hcircumflex', 'Hdotbelow', 'N', 'Nacute', 'Ncaron', 'Ncommaaccent', 'Ndot', 'Ndotbelow', 'Nlinebelow', 'Ntilde', 'U', 'Uacute', 'Ubreve', 'Ucircumflex', 'Udieresis', 'Udotbelow', 'Ugrave', 'Ugravedbl', 'Uhook', 'Uhorn', 'Uhornacute', 'Uhorndot', 'Uhorngrave', 'Uhornhook', 'Uhorntilde', 'Uhungarumlaut', 'Uinvertedbreve', 'Umacron', 'Umacrondieresis', 'Uogonek', 'Uring', 'Utilde', 'Utildeacute', 'Eng', 'LJ', 'NJ', 'Nhookleft', 'd', 'ddotbelow', 'dlinebelow', 'one.sans'], font: Recursive Sans Casual B, groupName: public.kern1.H_right (5, 2)]
Well, Iβm not yet sure how to get past this, so itβll take more digging.
I think the solution may lie in understanding and fixing this early part of the above traceback:
π Added mark, mkmk, and GDEF to features
Exception ignored in: <function UFOOperator.__del__ at 0x107390900>
Traceback (most recent call last):
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/ufoProcessor/ufoOperator.py", line 485, in __del__
File "/Users/stephennixon/type-repos/recursive/venv/lib/python3.11/site-packages/ufoProcessor/ufoOperator.py", line 490, in changed
AttributeError: 'NoneType' object has no attribute 'keys'
Another possible issue causing the build failure is detailed at https://github.com/googlefonts/fontmake/issues/894.
Basically, ufo2ft now splits kerning by script, and the Sans sources for Recursive have kerning for /pi and other Greek characters. Iβll try adding some blank kerns for Greek into the Mono sources, and see whether that makes a difference here.
Also, re: "In the varfontprep-report.txt, there is a line saying that kerning is different... This is what Iβll investigate next." I see that the second font in that list includes one.sans in the list. So, Iβll set groups to be the same, again.
Adding blank kerning to mono sources for /pi /pi actually did help, but didn't fully solve things:
Couldn't merge the fonts, because some values were different, but should have
been the same. This happened while performing the following operation:
GPOS.table.FeatureList.FeatureCount
The problem is likely to be in Recursive Mono Casual A Slanted:
Expected to see .FeatureCount==5, instead saw 4
Incompatible features between masters.
Expected: kern, kern, kern, mark, mkmk.
Got: kern, kern, mark, mkmk.
Next, Iβll debug the ufoOperator traceback.