Question about wording in handbook about virtual masters

In the online handbook section about virtual masters, there is this note:

“Note that coordinates for the new axis must be set for the existing masters in File → Font Info… → Masters.”

I am confused about what that is supposed to mean.

Let’s assume we have a font that has only one master, and we want to add 3 axes for only one glyph. Virtual masters seem a perfect solution. In Font Info, we add 3 Virtual master parameters:

# CP "Virtual Master" 1
FOOO : 100
BAAR : 0
FOBA : 0

# CP "Virtual Master" 2
FOOO : 0
BAAR : 100
FOBA : 0

# CP "Virtual Master" 3
FOOO : 0
BAAR : 0
FOBA : 100

And in the glyph we set up 3 layers under the only master layer:

Regular
  {100, 0, 0}
  {0, 100, 0}
  {0, 0, 100}

In this case, we have only one master in the Font Info. The axis values there are all set to 0, because, why would they not, that is the default for the font, which mostly have no variation at all (except for the one glyph).

Q1:
But according to the mentioned note from the handbook, what should I put in the master’s axes values then?

Q2:
Is this the correct set up for such a case according to how Glyphs wants it to be? I also ask this from the developer perspective of Variable Font Preview, which used to work with Virtual Masters, but has lost the capability down the road due to some changes in Glyphs since I first implemented virtual masters.

That is the part that the quote from the Handbook is talking about. For your example, having a coordinate of 0 in the non-virtual masters might be fine, but that may not always be the case. Maybe you have an axis where the virtual master has its coordinate set to 0 and the other masters have it at 100 or some other non-zero value.

The note is just saying: “Hey, when you add axes to the font to be used with virtual masters, remember that these axes also apply to non-virtual masters. So, make sure that the coordinates are not only configured in the virtual masters.”

Thanks!

I try to inspect the font’s virtual masters via code (goal is to fix them in Variable Font Preview [objective-c]) for now quickly in python.

A question about this inspective print:

print(Font.variationAxesRanges_(Font.masters[0]))
>>>
{
    BAAR =     (
        0,
        0,
        100
    );
    FOBA =     (
        0,
        0,
        100
    );
    FOOO =     (
        0,
        0,
        100
    );
}

Do these values for each axis mean min, default, max? (in that order?)

That’s it. The internal values: min, default, max.

Thanks!

And you don’t need three Virtual Masters parameters. You can have one with all axis set to 100 (assuming that the real master has only zeros). It is adding points to the design space that makes sure it spans wide enough enclose all brace layers.

Thanks a ton! I can confirm, that works :tada: Very clean and tidy that way.

I’ll let the user with that setup know about this.