Issues exporting working VF

Hello, I am new to this forum but not new to Glyphs and font design. As a little background, I work for a large corporation in the US. Several years ago we worked with Monotype to design a custom font for the company that now exists as our brand font across all platforms. In the last year we decided we wanted to make some small tweaks to a few characters, and since I have experience in Glyphs, we took it in-house.

We received the original Glyphs working files and made all the fixes, but decided to try to create a variable font just as an experiment. Unfortunately I’ve ran into some issues. Before you ask, I ran through the VF documentation on the Glyphs several times and still could not resolve my issue. I’ve watched a lot of YT tutorials as well but none have targeted my specific issue. Also, pardon me if I leave any details out, I’m just coming back to this after a few months so feel free to ask questions.

Currently I have two files with multiple masters: the roman file and the italic file. Each file has a master for “Light”, “SemiLight”, “Regular”, “Bold” and “Condensed”.

From these masters, I have been able to successfully export our latest font files as .otf using specific Axes Coordinates in the following weights: Light, Regular, Medium, Bold, Heavy, Light Condensed, Condensed, Medium Condensed, Bold Condensed and Heavy Condensed.

Since the Instances of the .otf exports have very specific Axes Coordinates, and are different from the actual masters themselves, I’m having trouble figuring out how to specify the ranges in the VF. Ideally I would want them to be the full range of wght as well as the full range of wdth being expressed in the export Instances. However, when I export I end up with this pretty buggy version of the VF upon testing that seems to be jumping around in wght and wdth in Dinamo Font Gaunlet/Wakamai Fondue, and is using the ranges from the master as it’s extremes on the sliders.

I’ve tried a handful of different solutions but seeing as none of them helped resolve my issue, I’m just going to spare the details and be open to trying all suggestions, even if I’ve already tried some.

Any advice would be better than none at all. Thank you in advance!

  1. Make the regular master your origin (there’s a custom parameter for that). It’s best To use a master from which you can reach any other master by changing only one coordinate each time.
  2. For the width axis, use 100 for normal widths and 75 for the condensed.
  3. Set axis location parameters for the axis mapping. Make sure your the weight class and width class entries are set correctly in all instances in Font Info > Exports and run the mekkablue script Interpolation > Set Weight Axis Locations.
  4. Add a variable font setting. Easiest with the mekkablue script Font Info > OTVAR Maker.
1 Like

Rainer, thanks for the prompt response! I think I understand everything in your directions, but will let you know. I’ll jump back into this when I log back in for the day tomorrow.

Thanks again!

From what I can tell, you have multiple masters on the weight axis at width=500, but only one condensed master. This is not really possible to export as a variable font, since you need a rectangular setup. What this means in your case: you need a Thin Condensed and a Bold Condensed master.

You can also use the Disable Masters parameter in your variable font setting to deactivate the Condensed master and thus end up with a variable font only for the weight axis at the normal width.

It is rectangular if the regular is the origin.

This setup is technically possible but probably will not give nice results in the light and bold condensed corners.

It’s somewhat of a minimal multiple master file, being that Monotype never designed the Light Condensed and the Bold Condensed masters (just the Regular Condensed).

But with that being said, instances of Light Condensed, Condensed, Medium Condensed, Bold Condensed and Heavy Condensed are all being outputted into working .otf files. First question, how are those instances being exported if the masters don’t exist? And second question, if that’s possible, is there any way to interpolate the missing condensed masters?

Going to try some of the above recommendations now btw.

Those instances are extrapolated based upon the existing masters. Extralopation refers to them being derived based on an axis while not being on that axis – so, for example, having a designed weight axis 0–100 and an extrapolated instance at wght=150 means that instance is extrapolated.

You can add these instances as masters by going to the Exports tab, selecting that instance and clicking + and Instance as Master.

The variable font spec allows such a setup. Not sure if Glyphs can handle it. Can you send me the file (remove all but one glyph (like the “o” or “a”) it needed).

Sebastian, it seems Glyphs doesn’t like me doing this… perhaps because the one master I do have for condensed has a different Width setting than the export Instances do. My condensed Master has a Width of 100 where my exports Instances have a Width of 390.

Georg, I DM’d you the Glyphs file. Open to do the same for you Sebastian.

I am a bit lost, it seems.

The problem is the Axes Mapping Parameter. You need an Axis Location parameters in the masters, too. Then you can add Axis Location parameters in the instances and remove the axis Mapping. Much easier to understand and manage that way.
The axis Mapping parameter tries to limit the range of the width axis. But that is not supported in avar.

Oh wow! Okay, this is some progress. It appears to work, but it’s spanning the full range of the masters (from 6 to 230 for weight, and from 100 to 500 for width—these are the extremes of the masters). I want to limit those to the ranges of 50 to 210 for weight, and 390 to 500 for width—these are the extremes of the Instances we export and use in our .otf version. The master goes a bit lighter and a bit heavier than our intention.

Is there any way to set a min and max for the weight and width being compiled into the exported VF?

This has been so helpful btw, thanks!

To limit an axis (or a combination of axis) you need avar2. That is not supported in Glyphs, yet.

1 Like

I think he means to remove part of an axis. You don’t need avar2 for that.

@jvrhovnik you can limit the axes as a post-processing step using the Python FontTools. It requires some familiarity with the command line, though:

fonttools varLib.instancer YourFontVF.ttf wght=50:210 wdth=390:500
1 Like

I think what you cannot do is allow full range on wght for wdth=100 and at the same time limited wght for wdth=75. Valid question of course is what should happen at wdth positions in between. And that’s what avar2 is all about.

1 Like

Okay, I’m entering a territory I’m a bit unfamiliar with, but I have some coworkers who can definitely help. Python FontTools and avar2; it’s my understanding that either one of these tools will reach the solution, correct? If so, what are the steps needed for avar2? Jens seems to have outlined what is needed in Python FontTools already.

Where do you want to use the font? It’s not supported everywhere yet.

It will be distributed mainly to designers within our organization. So for the most part, use will be within Adobe suite and other various design software if needed.

The fonttools command that I posted will limit the axes so that the remaining design space is still rectangular. If the grey rectangle is the original, full space, then applying the command will throw away everything from the font except the yellow rectangle.

Bildschirmfoto 2024-06-05 um 20.29.41

On the other hand, an avar2 table would distort the design space so that it isn’t rectangular anymore. Like Rainer said, for example if you want to allow all widths at a medium weight, but no width change at the light extreme of the weight:

Bildschirmfoto 2024-06-05 um 20.40.21

In this example it would mean that at the narrow end, the weight could only vary from 80 to 230, then as you approach your width 390, the weight can get lighter, then at the wider styles, the weight would decrease in variability, until there is only weight 80 at the widest point. Not that this example necessarily makes sense :wink:

And that is only one use case for avar2, it can do different modifications of the design space, too.

1 Like

@jkutilek Very helpful illustrations! I think what is happening in the fonttools example is going to be ample. I understand what’s happening in the avar2 example but I think for the sake of my goal, it won’t really be necessary to create something that dynamic. It’s great to know that that exists though.

I got Python installed, and fonttools installed, I just can’t seem to get the fonttools commands to be found in terminal. Something to do with my bash profile or bash rc files needing proper call back. I have some coworkers that understand that stuff though so we will get it running when we have some time in the next week.

I’ll report back with any questions, or if we find success. Thanks for all the help thus far! This is a very helpful community.