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.
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.
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 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.
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?