Multiple Masters, Part 3: Setting up Instances

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

Okay, so we have set up our masters for interpolation, and then, we made sure the paths in our glyphs are compatible. Now it is time to determine our instances. Each instance will be one font in the font family we are about to generate.

Setting up instances.

Okay, let’s get this done. Go to File > Font Info > Instances and push the Plus button at the bottom left. Glyphs will then insert a Regular instance:

Now, there are three super-important fields in an instance. Firstly, the Style Name must be unique for each font family. Choose your style name wisely, because a lot depends on it. You can use uppercase and lowercase letters, even space. But for better compatibility, it is a very good idea to only use ASCII characters for the style name.

Then, take a look at the Weight popup right below the name. At first sight, this may seem like a redundant repetition of the Style Name field. But it is not, because it determines the little grey number next to it, which in turn determines the font menu order, at least in Adobe applications.

And, most importantly, there’s the Interpolation value for Weight. Remember the stem widths we used as Master values? In our example, it was 90 and 300. The weight interpolation value must be a number in between. In other words, whatever number you put in here will be the stem width of this font! Cool.

So, let us add a few instances with the Plus button in the lower left corner of the window. Then, we should make sure, each of them has its own style name, weight setting, and an interpolation value between (and including) 90 and 300, or whatever your master stem values are.

Then go back to an Edit tab in the main window, open the Preview section by clicking on the eye icon in the lower left corner of the window, then pick an instance from the popup menu next to it. Resize the preview area by dragging the separator line. The preview will always center on the current glyph.

Or, even better, simply export into the Adobe Fonts folder, and all fonts will be available immediately in InDesign or any other running Adobe app. Cool.

Keep Your Style Name Short

One good piece of advice: Keep your style name short to avoid problems in Windows. How short? Well, you are on the safe side if the combined length of family and style name does not exceed 20 characters. If the name is too long, Windows may think the font is invalid.

But sometimes, you will not be able to keep it short enough. Imagine a style name like Condensed Ultralight. Unless you have a very, very short family name, you will run into problems.

In cases like this, use shortened versions of the parts that make up the style name. For instance, use Cd for Condensed, Xt for Extended, Lt for Light, Rg for Regular, Md for Medium, Sb for Semibold, Bd for Bold, Hv for Heavy, Bk for Black, Ultr for Ultra, etc.

Then, add a custom parameter called preferredSubfamilyName, and set its value to the long version of the name. This is going to be the name that will actually be displayed in the user interface. Speaking of which, you can also shorten the family name, and use a preferredFamilyName parameter for the unabridged version of the family name.

Take Complete Control of Font Menu Order

As I mentioned above, the Weight popup below the name determines the order in the font family submenu, at least in Adobe applications. But how? Well, it does so by changing the little grey number next to the popup menu. It is called the weight class. Look closely:

In a nutshell, smaller number equals lighter weight equals higher position in the font menu. On a side note, and to make things more complex, the width class one row below takes precedence over the weight class. But if we only employ a weight axis, that is not really important.

There is a potential pitfall here, though. Some of the options in the popup value lead to the same weight class number:

ExtraLight, Thin, UltraLight: 250
Light: 300
Normal, Regular: 400
Medium: 500
DemiBold, SemiBold: 600
Bold: 700
UltraBold, ExtraBold: 800
Black, Heavy: 900

So, what if we have two very light weights, and we want to differentiate between Thin and UltraLight? The weight class would be 250 in either case, so the font menu order is undetermined.

Fear not, there is a simple solution. In the Custom Parameters section, at the bottom of the window, add a new parameter by clicking the plus button. Set the Property to weightClass and its Value to something a little larger or smaller, e.g., 255 or 245. Remember: the smaller the value, the higher up in the font family submenu it will end up.

Linear, Luc(as), and Pablo Distributions

Okay, we know how to pick a spot on the interpolation axis. But how do we know what is a good spot? Assuming we have a Light and a Bold Master, and we use their values for the Ultralight and Heavy instances, then where exactly between those two should we put the Light, Regular, the Medium, the Semibold, the Bold instances?

As a first step, it may appear to be a good start to distribute them evenly, so the difference between two subsequent weight values is always the same. E.g., your Light Master is at 20, your Bold Master is at 140. Then the instance values would be: 20, 40, 60, 80, 100, 120, and 140. The difference between two instances is always 20. We call this a linear distribution of stem weights, or simply, equal steps. But, alas, it doesn’t work that well:

There is too little difference between the instances in the middle of the spectrum. And unfortunately, this is where it counts most. They just look too similar, I couldn’t tell which one is supposed to be the Regular, the Book, or the Bold. Clearly, we need better interpolation values.

Enter interpolation theory. It was the great Luc(as) de Groot who noted that it is not the absolute difference that counts, but rather the stem growth percentage. In the above example the first step, between 20 and 40, is an increment of 100%. The the second step, between 40 and 60, only of 50% anymore. The percentages gradually decline until the end, where, between 120 and 140, we count an increment of merely 16.67%. In search of a better solution, De Groot himself suggested to keep that growth percentage constant (at least for vertical stems). This has become famous as the Luc(as) Formula or the Luc(as) distribution. According to this, the relative visual difference stays the same, whereas the absolute difference is small at first, but grows larger towards the end of the spectrum:

Certainly an improvement. The worst thing you can say about it is that there are too many light weights. Big deal, we’ll just leave out one, or we could just make one step less in total. And perhaps, the jump between the two boldest weights is a pretty big one, but still the last three weights would make a good set of Regular, Semibold, and Bold. Does it always work that well?

No, says the incomparable Pablo Impallari. He thinks that if you interpolate from very thin to very bold, the Luc(as) distribution causes steps to become too large at the bold end of the axis. In other words, from what looks like a Semibold, it immediately jumps to what most people would perceive as a Heavy. We could easily fit another instance in there.

In other words, if the interpolation spans from very much white and very little black (Light) all the way to very little white and very much black (Heavy), then we need smaller steps towards both ends of the axis. After all, a small step at the beginning may already cause the stem to double, and a small step at the end may cause the little white counters to be cut in half. So, at the beginning, we need a distribution that is more like the Luc(as) distribution, and at the end, we need something that looks more like a linear distribution. Mathematicians would calculate a so-called ogee curve between those two distributions. In type design land, this has become known as the Pablo distribution:

Pablo Impallari himself has come up with the wonderful Family Stem Weight Calculator. You can use it to calculate linear, Luc(as), and Pablo distributions.

Or you can use the Insert Instances script, which is part of the Masters scripts in the mekkablue script collection. The script will directly insert the instances in the Instances tab of your Font Info window.

Whichever method you choose, please see it as a starting point. The mileage varies greatly between different designs. In the end, let your eye decide the precise distribution of stem weights.

No Grid for Light Weights

Especially Hairlines, Thins, and Lights suffer from grid-snapping to integer coordinates. One unit may already be a lot for a thin weight, and cause distortions when the overlaps are removed and the resulting nodes are grid-fitted. So, if you do have very light instances in your interpolation, consider disabling forced integer coordinates by setting File > Font Info > Other Settings > Grid Step to zero:

Phew, now we deserve a coffee break.


Update 2013-12-14: Removed a usage note for the Insert Instances script, because it is not necessary anymore in its latest version.
Update 2015-07-20: Updated for Glyphs 2.