I am trying to export and get lots of warning dialogs that are totally not useful.
“There are several glyphs with a lot of nodes. Adding subroutines can take a long time, then.”
This font has over 4000 glyphs, how the hell I suppose to find them, and export does not work now.
Subroutine refers to outline decomposition and merging that Glyphs does on export, and you can disable it by adding “Disable Subroutines” custom parameter from Font Info > Font tab. You need to make sure, however, that all your components are decomposed and outline overlaps are manually merged when exporting to OTF (in TTF, the components can stay the same).
The ideal solution is to reduce the number of nodes. 4000 glyphs and “several” glyphs getting caught in this error suggests that all your glyphs have similarly many nodes. Try running "`Tidy up paths"for example.
If you are using Glyphs 3, this macro gives you the list of glyph names in the order of node count (paste it in the macro window and run. It might run in Glyphs 2 as well). You might want to clean up the glyphs at the top.
nodeCounts = 
for g in Glyphs.font.glyphs:
nodeCounts.append( (g.name, sum([len(p.nodes) for p in g.layers.paths])) )
for n in reversed(sorted(nodeCounts, key=lambda n: n)):
Disable subroutines doesn’t interfere with the decomposition and remove overlap. It is a technology to reduce file size for Postscript(CFF) based fonts. With complex outlines, this can take a very long time (hours). So if you have a font that would benefit from subroutines (because it has a lot repeated shapes, like dots or pixels) you might what to run it for the final export and only disable it when testing.
I run into the same problem with my pixel based font and have to disable subroutines to be able to export it as PostScript/CFF based OTF.
I would be willing to run the subroutines for the final export, even if it takes hours, but how do I do that? Glyphs just throws the error ‘There are several glyphs with a lot of nodes. Adding subroutines can take a long time, then.’ What is the way to force Glyphs to do it?
You can use the “Disable Subroutines” parameter to enable it, too. Add one and uncheck it.