Managing kerning across weights in FontLab?

fortress's picture

Hi there. This is my first post on Typophile so please excuse me if this topic has been answered elsewhere or if I'm in the wrong place.

My question is about managing kerning across interpolated fonts in FontLab. I have no experience in this area and I am just trying to understand how it is handled.

An example:

Say I have a light and a bold. I have kerned both. I then interpolate (using Blend Fonts?) a regular in-between. The regular would have kern values averaging the light and bold.

Where I'm having trouble:

If I were to throw out the light weight's values and re-kern it from scratch there would dozens of pairs rewritten. I want those changes to factor into the regular's kern values, but those, once interpolated, seem to be static.

I've also fixed some broken glyphs in the regular weight and I don't want that work to be overwritten.

Would I interpolate kern pairs without interpolating my glyphs? What method do you recommend? Am I asking the right question?

Thanks in advance.

blank's picture

Interpolate the new kern pairs for regular in a new file. Then replace the existing regular kerns with the new ones that you just interpolated. Unfortunately FontLab has problems with importing kerning, so it may be better and easier to split your final production fonts into individual files that import their kerning tables from OpenType feature files during compilation. That’s how I keep this stuff straight, but I’m also jumping between three other programs to do this stuff.

Read this thread for more on the subject:

fortress's picture

That sounds like the solution. I'm reading that thread now. Thanks, James!

Thomas Phinney's picture

If you do everything in multiple master space in the first place, instead of using the blend function, you can keep everything in sync with no additional effort.

Of course, working in MMs has its own complications, but it also has a lot of advantages. This is one of them.

Tim Ahrens's picture

I then interpolate (using Blend Fonts?) a regular in-between.

If you have two single fonts and want to interpolate them, I’d recommend to define an MM axis in one of them and then use the Assign Master command to get the other one in. Then use Generate Instance. Assign Master is more reliable than Blend Fonts or Mask to Master.

Would I interpolate kern pairs without interpolating my glyphs?

I would interpolate the whole font, then export the kerning as pfa file and re-import it into your final Regular. This method works quite realiably for me.

fortress's picture

@Thomas, I've tried blending with "Build the Multiple Master font" selected and the created font seems to inherit only from one parent. I've also tried "Generate Instance" with the same results. Both my weight and width axes are defined in both fonts. I must be missing a step. I'll continue to explore this direction.

@Tim, I haven't tried the "Assign Master" command. I'll give this a shot. I'll also try your .pfa method. Is this comparable to the .fea method that Adam Twardoch describes in the thread James linked to? (

Thanks again, James, Thomas, and Tim.

Jens Kutilek's picture

I think you need exactly the same kerning pairs in all masters for the blending to work. All kerns that exist in other masters must be set to 0 explicitly before blending.

ybaggar's picture

Tim (or anybody else): when you bring one font into MM using Assign Master, it gets the kerning of the "first" MM font right? At least that's what happened to me recently when I brought two separate fonts together into MM. I realized that once I generated an interpolated instance, and the kerning was not interpolated.

I had to export the metrics data of my second font and reimport it in the MM font.

Any way to avoid that, or was it a mistake from my part?

Tim Ahrens's picture

I was not aware that FL omits the kerning when using Assign Master. You need to use .pfa to get it in into the MM font, it seems.

.00's picture

I use Mask-to-Master to create the MM data, then I import the afm data for each instance from the original and go from there. It has worked fine all of these years. Never had a problem.

Syndicate content Syndicate content