googlefonts / Gulzar

Nastaliq font
https://gulzarfont.org
SIL Open Font License 1.1
38 stars 9 forks source link

Build failure with error "No module named 'fontFeatures.pathUtils'" #121

Open MattMatic opened 2 months ago

MattMatic commented 2 months ago

Building Gulzar fails with the error: No module named 'fontFeatures.pathUtils'

It seems that fontFeatures.pathUtils was available in fontFeatures v1.7.4 & 1.7.3, but is no longer in 1.8.0.

Fresh install under WSL with Win11.

MattMatic commented 2 months ago

Partial solution is to activate the venv environment, and manually install fontFeatures 1.7.4

Although the build progresses, there are additional errors - any clues would be helpful!

. venv/bin/activate; fez2fea --omit-gdef -O0 sources/build/Gulzar.glyphs sources/build/fez/anchor-attachment.fez > sources/build/fea/anchor-attachment.fea
# Bad callback in verb LoadAnchors
# Bad callback in verb AddSpacedAnchors
# Bad callback in verb QuantizeAnchors
# top, True
# Old TE schema detected
100%|█...█| 12590/12590 [00:00<00:00, 53844.02it/s]
# At top, fixed 3850/4041 collisions
# bottom, False
100%|█...█| 50092/50092 [00:00<00:00, 79994.96it/s]
# At bottom, fixed 11880/13413 collisions
# top, False
100%|█...█| 128826/128826 [00:00<00:00, 138523.42it/s]
# At top, fixed 16953/21749 collisions
Traceback (most recent call last):
  File "/home/user/Source/Gulzar/venv/bin/fez2fea", line 44, in <module>
    print(p.fontfeatures.asFea(do_gdef=args.do_gdef))
  File "/home/user/Source/Gulzar/venv/lib/python3.10/site-packages/fontFeatures/feaLib/FontFeatures.py", line 21, in asFea
    return self.asFeaAST(**kwargs).asFea()
  File "/home/user/Source/Gulzar/venv/lib/python3.10/site-packages/fontFeatures/feaLib/FontFeatures.py", line 149, in asFeaAST
    pre = k.feaPreamble(self)
  File "/home/user/Source/Gulzar/venv/lib/python3.10/site-packages/fontFeatures/feaLib/Routine.py", line 35, in feaPreamble
    if self.flags & 0xFF00:
TypeError: unsupported operand type(s) for &: 'dict' and 'int'
make: *** [Makefile:73: sources/build/fea/anchor-attachment.fea] Error 1
make: *** Deleting file 'sources/build/fea/anchor-attachment.fea'
MattMatic commented 2 months ago

So there's also a version issue with the fez-language package... Gulzar currently only builds with:

i.e.

Can Gulzar be brought up to date with fontFeatures 1.8.0 and fez-language 1.4.0? (And with other package updates)

The build gets much further, but fails after Compacting GPOS (attached). 2024-05-17-SourceGulzarMake.txt

But specifically:

…
Compiling features to 'fonts/ttf/Gulzar-Regular.ttf'
Reading 'post' table from disk
Decompiling 'post' table
Reading 'maxp' table from disk
Decompiling 'maxp' table
ERROR: sources/build/features.fea:187457:5: Can't define a variable scalar in a non-variable font
make: *** [Makefile:16: fonts/ttf/Gulzar-Regular.ttf] Error 1
make: *** Deleting file 'fonts/ttf/Gulzar-Regular.ttf'

Current pip package versions: 2024-05-17-pip-packages.txt

MattMatic commented 1 month ago

Some progress, but still failing with make release. 😟 Discovered that fez-language must be version 1.3.4 (not 1.3.3!). But hb-subset produces a "Bus error" and a zero byte file. (tried v8.5.0 and 5.3.1 of hb-subset)

After some experimentation, it appears that hb-subset cannot output to the same filename as the source. Windows gives a "Cannot open output file" error, but Linux gives a "Bus error" and nukes the file contents!

I can only conclude that the makefile is incorrect for release builds. hb-subset must have a different output filename. After adjusting the makefile, I am also getting an error that gftools-fix-font.py is missing...

Although the debug build is producing a TTF, the GSUB table and spot-checks with shaping does not match the released version of Gulzar v1.002.

Ideally would like a binary match to have confidence that the build process is good. Even better would be a build process using current libraries!

Really want to cooperate in improving Gulzar, and add other weights, but struggling to get a solid starting point that matches the released version. 😔 Would very much appreciate some guidance to get things moving! 😊

cc: @simoncozens