Axis Location parameter

I have font with two axis: weight and width.
I’m trying the Axis Location parameter and assign new values for the weight axis: 200 to the Thin master, and 900 to the Black master. And it works great, all the instances get scaled accordingly! Perfect!
But now I wanted to also offset my intermediate master to a different value so that my Regular weight (which is not a master) falls exactly at the value 400. But this is not working it seems that offsetting the intermediate master has no effect on the instances, all the instances continue to have the same weight value.

Any clues about this!

Many thanks!

Do you have the latest app version?

I had 2.6.2

I just updated to the last version and the problem remains.

Can you please send me the .glyphs file to support (at) (this website without www). I will have a look.


I don’t think the Axis Location parameter is working as intended, and I think I can explain what is going on:

Looking at a case with three weight masters at 28, 94 and 195. These are re-defined with the parameter as 100, 400 and 900. There are 9 instances: 28, 42, 64, 94, 110, 130, 152, 157, 194.
As expected the fvar table gives a range with min value 100, default 400 and max value 900. The instances are expected to match the interpolations between 28 and 94 and between 94 and 194. For me that would be 100, 163.64, 263.64, 400, 480, 580, 690, 805 and 900. But the only two that match are 100 and 900. In fvar the regular instance has 418.073 instead of 400. I can reconstruct this as being 100 + 800*(94-28)/(194-28). In other words the regular 94 is treated as an interpolation between 28 and 194, rather than as an intermediate master that is used to interpolate between.

In the STAT table the original interpolation values are used too. I am not sure if that is a problem. But I expected to see the recalculated values.

That is exactly what is happening to me.

Yes, the axis positions have been broken for ages. I reported it in June 2018 and haven’t given up hope that Georg will fix it some day :wink:

I just improved it a tiny bit.

Can you try the latest cutting edge version?

This morning’s update gives me the expected values in both gvar and STAT table. Thanks!

George, the value for the regular now shows 400,57 (as expected I think), but the font showing is not correct, the regular style is not how is it expected, it is lighter.
Before, the font was correct but the value was not 400, now the value is 400 but the font is not correct.

On the snap you have the variable font on top, and the static Regular as it should be on the bottom.

I think that it might be scaling the instances but it didn’t offset the intermediate master.

I think it is the other way round. Georg’s fix moved the intermediate master to the correct position, but the instances (off-master axis location) are not changed. You would need an avar table for that, which Glyphs currently doesn’t generate.

avar: There is a preliminary, undocumented implementation. Should be pretty self-explanatory, but use it with caution, the UI is still a bit buggy. Try the Axis Mappings parameter in Font Info > Font.

As it happened, I tried the axis mapping parameter this morning for a weight axis only font and it got me the desired result . Typing the numbers is indeed somewhat cumbersome in the UI as it is now. The only functional flaw might be that it doesn’t allow fractional values.

What values should I put in there? I tried a couple of things but none give me the correct avar table.


(48, 72, 112 are the Glyphs interpolation values, 200 400 700 are the axis positions)

I still don’t get how the axis mapping should be used. In Glyphs 3, I get this when I add the parameter:

The numbers are the internal master values. Shouldn’t one of those columns correspond to the Axis Location parameters? Otherwise I have to figure out what e.g. 80 corresponds to when 70 is axis location 300, 80 → 450 and 132 → 800. Of course 80 → 375, but I want it to be at 400, so I have to find out how normalizing the axis positions works … that is just one step short of coding the avar table manually.

How do I put interpolation value 80 at axis location 400?

I worked a lot on axis locations and avar in the last few days. It works much better now.

The axis location parameter does not except floating numbers. I would like to map the width value to 62.5 (like recommended in the OT spec: OS/2 - OS/2 and Windows metrics table (OpenType 1.9) - Typography | Microsoft Docs), but it does not work. It seems it only supports integers.