Hello, I was wondering if there’s a way to export a variable font that includes masked paths.
Variable fonts don’t have a “mask” feature, so Glyphs has to bake the mask into the outline on export. If the resulting outline is not compatible, then you cannot export until you have adjusted the nodes to allow for compatible outlines.
All the outlines are compatible but when I export variable won’t export it and I get these errors.
Using Show Variable Font Preview, I can see it clearly the interpolation.

Your outlines are not compatible, looking at your screenhot.
Do the following: Click “Remove Overlap” on all masters, you will see that this creates incompatible outlines. Your nodes at the top and bottom are covered by the mask in your bold master, but not in your light master.
The outlines need to be compatible after the mask is applied.
For static fonts, it is interpolated first, remove overlap later. For variable fonts it is the other way around.
Georg, can I ask if it’s intentional that running Layer.flattenOutlinesRemoveOverlap_origHints_secondaryPath_extraHandles_error_(False, None, None, None, None)
on a layer like this treats the regular component as a mask (it’s not set as a mask), adding it to the path? I guess it decomposes it to avoid glyphs with paths + components (probably?) but merging it with the path seems like a bug or is it not?
all shapes that are present when it encounters a mask are decomposed and overlaps removed. So the component is added to the paths, not treated as a mask.
The Plugin does not convert the outlines to overlap-removed TrueType curves in its current default state. So it shows you how it could look like if you manage to make the point structure compatible as Florian wrote. In a future update you will also get to see if it does not work.
It looks like the behavior is more nuanced depending on the order of shapes, but I wonder which one is expected and intentional:
↓
but
↓
or if the component is added last:
can you enable “Show master compatibly”. It will show the shape indexes. All shapes with a lower index will be merged.
Report Compatibility — this script reports the compatibility of the selected glyphs + compatibility after flattening outlines (as in the variable export) + compatibility after removing overlaps (as in the variable export with a “RemoveOverlap” filter):
Also useful for checking compatibility of incompatible groups, such as uprights + italics: