Variable font. Mapping `wght`

Is it possible to remap the font weights of a OT Var font?
This would help me to set range from 100 to 900, as the CSS standard weight class.
In a .designspace file it would be something like:

    <axis tag="wght" name="Weight" minimum="100" maximum="900" default="400">
      <map input="100" output="30"/>
      <map input="200" output="44"/>
      <map input="300" output="63"/>
      <map input="400" output="82"/>
      <map input="500" output="100"/>
      <map input="600" output="123"/>
      <map input="700" output="153"/>
      <map input="800" output="182"/>
      <map input="900" output="214"/>
    <axis tag="opsz" name="Optical size" minimum="10" maximum="40" default="30"/>


With ttx. I’ll post the code tomorrow.

1 Like

It would be great to have a custom parameter for doing this :slight_smile:

What you want to change is the MaxValue of an Axis definition inside the fvar table.

Easiest way to do this is with OTMaster. It has a straight forward UI, you open the font, look for fvar, open its Axis definitions, and change the MaxValue entries, and save the file, done.

If you want to do it with ttx, you furst need to take the hurdle of installing fonttools. Best guess is to paste this in Terminal, and to hope it works:

python3 -m pip install fonttools

This makes a command called ttx available, which can convert your OpenType font into XML and back again.

  1. So, first, you need to extract the fvar table. cd into the same directory as your font, and use this:
    ttx -t fvar "font.ttf"
    Instead of font.ttf, use the name of the font file. (Hint: you can also drag and drop into the Terminal window.)
  2. Open the resulting .ttx file in your favorite plaintext editor (I recommend Sublime Text, TextMate, BBEdit or Atom), look for the <MaxValue> tag, and change the value there. Save the file again.
  3. Merge (-m) the .ttx back into the .ttf:
    ttx -m "font.ttf" -o "font.ttf" font.ttx
    The -o option overwrites the existing file, rather than creating another copy.

Now the .ttf should have a new maximum for the respective axis.

Thanks Rainer!

Wouldn’t it be easier to add an “avar” table?
I think this is what @juandelperal wanted.

You can add an avar table by adding an ‘Axis Mappings’ custom parameter in FileFont Info…Font. See the variable fonts tutorial for details:

But a lot of times, instead of adding an ‘Axis Mappings’ parameter on the font, it is easier to add an ‘Axis Location’ parameter in each instance.

I think is otherwise, in a font that has 6, 8 masters having to set up this on every master is annoying while in Axis mappings yo do it all at once.
Also in Axis Location parameter dialog the tab key to switch to other field doesn’t work. So you need to click and type insteead of only use the keyboard.
In addtion I think it will be handy if the initial values will not be zero but the “current master location”, because most of the times you only need to map only one axis, typically the weight.


1 Like