Hi! I sometimes find SemiBold redundant and go with Regular - Medium - Bold. That messes up the variable axis, since Regular must be 400 and Bold 700, so it goes …400, 500, 700… That interpolates visually too clumsy and non-linearly. Is there any common practice to work around that? What’s the least bad solution?
I assume you are talking about masters, not instances. In that case, do you need the Medium master? Or would the occasional Intermediate Layer be enough? Or, place the master between Regular and Bold somewhere else on the weight axis and only use interpolations for the instances between the two extremes.
I would still use stem thickness (e.g. of the n
) as my axis coordinates for the weight axis. And use Axis Location
parameters to map them to the proper weight value (for variable fonts). The interpolation will be none linear but the positions will be correct.
Florian, no no, I am talking about variable instances
Let me rephrase it — if you have Light Regular Medium Bold, ExtraBold, Black (and it’s a good progression based on Lucas de Groot or similar) — which mapped wght axis values should they have on export? According to the specs, 300 400 500 700 800 900. The step between all instances is 100, except Medium to Bold is 200. As you move the slider or animate it, Medium to Bold goes twice as slow as the rest of it. Squeezing in SemiBold doesn’t always make sense for a good progression. Moving Bold to 600 is not right for CSS and probably some apps. What do you do then?
You either adapt your design or live with the fact that you chose to omit Semibold. Spec is spec, and these numbers need to correspond to their associated styles. Why are you leaving out Semibold?
Also, in what context is this actually relevant? When variable fonts are used, where will this have an effect?
The interpolation position is defined by the internal coordinates (those follow the progression you choose). The Axis Location parameters define the external number the user of the font sees.
Yes, exactly. As Alex described, this mapping can result in some very extreme interpolation speed changes, if you map one step in your design to two steps on the usWeightClass range. This would mean the weight increases at half the speed between 400 and 600 than it does for the other ranges.
I’m afraid that’s just the way it is.
It’s fairly common. Perhaps even more common than having it?
Any animations, like a transition from Regular to Bold on mouse hover.
My conclusion so far that mapping Bold to 600 is a lesser evil — it breaks the B button and ‘bold’ on CSS, but that’s at least workaroundable for the user, unlike the uneven scale. Uhh specs.
Don’t play ticks with your users. This disrupts a lot css. Either when they switch fonts or when the font is not loading the user get too heavy or to light font.
I would suggest maybe putting your one weight between Regular and Bold at 550. That way, you “only” get a 33% slower interpolation.
This also doesn’t confirm to the spec, of course, but it will break a lot less things than mapping Bold to something other than 700.
Whoa, that works surprisingly well, patent it!
It’s still nothing I recommend, as it’s strictly against the spec.
I’m not sure about some of the points here.
- We can use the STAT table to link the Regular to the Bold. You can link to another value than 700 there. But all apps seem to ignore that and link to 700 in any case. What’s the use of that setting then …
- Does mapping your Bold to something else than 700 actually seriously break anything? What is a Bold weight isn’t standardized. A Bold from one font does not match a Bold from another font visually, so you have to adapt the weight class in CSS anyway when switching fonts.
The whole thing gets even worse when you have a large number of thin weights. For example, the normal TheSans family has 8 weights from ExtraLight to Black (100 to 900).
But then there is TheSans Hair, with another 8 weights lighter than ExtraLight. So how am I supposed to map those into the designspace between 1 and 99 and still get a meaningful interpolation curve…?
I think those strikt rules mostly apply to the 400 and 700 weights. Outside of that range, maps the weight class as good as possible (and use any “fraction” you need.
One issue is that the user will get Bold in static and ExtraBold in variable, if they mix them, unless they are careful