Variable font interpolation - brace/bracket problem

Hi all,
I’ve run into some problems whilst trying to control the interpolation of a 6 masters, 2 axis variable font I’m working on.
I’m pretty sure this is due to a misconception on my part, but nevertheless I got stuck when trying to use the brace/bracket tricks.

My master setup is as follows:
I have 3 masters for weight variation, the other 3 have a shape-specific variation following the same weight change of the first 3 (the outlines are more squared, terminals end up horizontal)

I’m trying to control how the terminals change during interpolation.
I don’t want them to translate from vertical to horizontal, resulting in oblique terminals in interpolated instances.
So I am designing 6 additional versions for each glyph. My aim is to keep the terminals vertical until a certain “SHAPE-AXIS” value, and then switching directly to horizontal.

However, while the result in the preview panel seems to work fine, the variable font exported gives me unexpected results in the interpolation.

Does anyone know the reason for this behaviour?


If this is your goal, I would think bracket layers are what you need since they allow the sort of on/off switching you are describing.

Based on my experience with these layers, the setup of your brace layers looks more like the way bracket layers are supposed to be set up: one per master layer. I think the reason for the weird outline on export is a result of this: you actually have 3 pairs of layers that share the exact same location in the design space (i.e. you have two layers named ‘{250, 49}’), which is bound to lead to interpolation weirdness.

Leaving your masters as they are, I would expect your layer setup to look like this based on your screenshot:

  • Light (round, vertical terminals)
  • Light [0, 49] (round, horizontal terminals)
  • Bold (round, vertical terminals)
  • Bold [0, 49] (round, horizontal terminals)
  • Black (round, vertical terminals)
  • Black [0, 49] (round, horizontal terminals)
  • Light (square, horizontal terminals)
  • Light ]1000, 49] (square, vertical terminals)
  • Bold (square, horizontal terminals)
  • Bold ]1000, 49] (square, vertical terminals)
  • Black (square, horizontal terminals)
  • Black ]1000, 49] (square, vertical terminals)

[0, 49] will only be active when both numbers are exceeded. Setting the weight value to 0 here (or any number less than the minimum for that axis) is a trick to make the switch only rely on the second axis. Similarly with the reverse bracket layers ]1000, 49] this will only be active until both values are exceeded, setting 1000 for the first number (or any number greater than the maximum for that axis) ensures that the switching relies on the second value only. I believe the overall result of this setup would be an interpolation of round to square curves with terminals snapping to horizontal at 49 on the second axis.

I think Glyphs should be able to properly preview that, but I am unsure if it respects the second value for the switching when exporting. See Georg’s comments here: Multidimensional bracket layers

Thank you very much for your thorough reply.
Unfortunately the problem seems to happen when exporting.
The preview in Glyphs is accurate, but once exported it just seem to ignore the secondary axis values.
With your bracket set-up, though, at least there is no “unexpected” behaviour in the interpolation – the terminals just smoothly transitions from vertical to horizontal, showing all the oblique terminals in between.

the bracket layers are only supporting the first axis.

I see… so is there no way to apply some sort of control over the interpolation of a secondary, custom axis?

I have never tested this but could a potential workaround be to switch the order of your axes? As in style axis then weight axis? This way the bracket layers could work properly for the style axis.

This is assuming you don’t intend to use bracket layers to switch things out along the weight axis.

Thanks for the suggestion.
I tried it but unfortunately the bracket seems to trigger the weight axis regardless of its order in the font info panel…