Feature Suggestion : "Subsetted Designspace" CP for Variable exports

Since the “Disable Masters” custom parameter now seems especially stable (Thanks, @GeorgSeifert!), I’m using it frequently to generate subsetted VFs.

I was wondering if it might be a good addition to include a “Subsetted Designspace” custom parameter, where users could choose a range for each axis and then Glyphs could detect which masters are outside the ranges and disable them, similar to how “Disable Masters” works.

Let’s say I have a 4 masters project like :

* Light Condensed  :  wght:200, wdth:60
* Bold Condensed   :  wght:600, wdth:60
* Light            :  wght:200, wdth:100
* Bold             :  wght:600, wdth:100

To export a Condensed VF, actually I could use “Disable masters” with :

Light
Bold

With a “Subsetted Designspace”, it could be :

wght : 200-600
wdth : 60

For small projects, it’s not a big difference, but for projects with many masters/axes, this could be really helpful.

Yes, this would be great built in. @HugoJ There is a slicer in fonttools: instancer — fontTools Documentation and the Slice app GitHub - source-foundry/Slice: An open-source, cross-platform GUI app to generate custom font design spaces from variable fonts
Sometimes both produce differently buggy fonts though, random features don’t work, etc. So always test the output thoroughly.

1 Like

Bonus:
If the axis poles don’t correspond to existing masters, those missing masters could be generated for export.

It’s always tricky with alternate and intermediate layers, though, also with the current Disable Masters parameter.

I also use both, but sometimes this needs to be done directly in Glyphs, because some glyphs are not available in all masters. For instance, in a setup where the Condensed masters are Light and Bold, but the Normal width has an extra Black master, it’s not possible to generate the VF and then subset it with an external tool.

A safe option could be to allow users to choose values only from one of the existing masters, and not between.

What is then the difference to the Disable Masters parameter?

What happens if I set the parameter, and then change the axis values in the masters?

The idea is to automatically detect which masters need to be disable instead to have to write all names in a “Disable Masters” CP.

Same as if you change the name of a master with Disable Masters, it’s broken.

My Corretto Subsetter Plugin allows to apply partial axis ranges to variable fonts on each export.

I wanted to ask about that. Do you use fonttools after export, or do you subset the design space before exporting from Glyphs?

The Corretto Subsetter uses FontTools to limit or drop axes from the binary font. In FontTools terminology, it’s called “partial instancing”.

I see. So still necessary to have fully compatible masters in the Glyphs file, other than when using Disable Masters.

I use the same technique as you in my export plugin, but was just wondering whether you had figured out a different approach.

I have by scripting all the steps you’d do manually — inserting and deleting masters and special layers, rebuilding instance names and such. A lot more fun than with Instancer!