How to set different metrics and kerning keys for each master?

Hi there,

I am working on a file with 4 masters, 2 Regular, 2 Italics. Problem is the italics need to have several glyphs with different metric keys than the Regular masters. Is there a way to set them separately within the same file?


Add metrics keys with two equal signs: ==N*0.8

Great! Is there a similar solution for kerning keys? I tried the == and it didn’t work.

Kerning groups cant be layer specific. What should happen with interpolated instances?

With regards to roman and italic weights I’d love to be able to set different kerning keys within the same file. So I can match italic to italic, roman match roman and bear the responsibility. I know Rainer doesn’t approve but I find it speeds up production.

If you do the roman and the italic together in the same file the kerning class of lets say the letter a will not work ok with the italic so it would be great to be able to name the left or right kerning differently.

1 Like

Why not split into two files once you get to kerning?

Rarely do I find it to be so linear or definitive. Absolute end stage sure, but the benefits of jumping between styles grease production wheels. Anecdotally it seems lots of people prefer a single file.

Is this something that would still be possible to add? It would be very helpful to being able to sometimes set different kerning groups for glyphs that change form when set to italic. It is very important to keep both regular and italic in the same glyphs file for my work.

If you are 100% set on keeping your italic shapes in the same file (why is really beyond me, this only creates problems), the only sensible way to achieve proper kerning groups is to have an a, and an a.ital (for instance). You then kern a and a.ital separately.

This works pretty well for exports, static as well as variable, even: Simply add the custom parameter Rename Glyphs to all italic instances and write a=a.ital. Add more lines for whatever other separate italic glyphs you might have.

To all instances, then add another custom parameter Remove Glyphs and add *.ital, so that you only keep one of each in the file. Adding this parameter will remove all italic shapes from the roman file and all roman shapes from the italic.

For the variable font setting, it gets a little more complicated: Add a feature in Font Info > Features called rlig (which feature to use exactly is a whole different debate…). There you can write a condition statement for your italic axis (let’s say range 0–1) like this:

condition 0.5 < ital;
sub a by a.ital;
sub b by b.ital;


This will substitute all your roman glyphs by your italic counterparts if the italic slider is more to the italic side. Note that this means your .ital glyphs will still need to be exported in your variable font.

Hope this helps, but always remember, it is ludicrous to go to this extent of work just to have separate kerning groups in the same file. Just split the file.

1 Like

Thanks for the lengthy reply.

Unfortunately the .ital feature wouldn’t work in this scenario. As for other issues, everything works as expected without any problems. The only issue is that I have create for kerning groups than I would have liked due them being shared across masters.

You need to assign an extra group to those glyphs that would need two classes and duplicate some kerning pairs.

Yes, that is the current solution I use for this issue.

What I am wondering though is if you would consider adding the ability to make certain letters have different Kerning pairs in different masters. It isn’t only in fonts containing both bold and italic masters where this feature would be useful.

1 Like

There was a similar thread before about kerning subclasses and being able to have multiple kerning classes for a glyph and switching between them.

I had a suggestion of handling it similar to having multiple anchors. Also wondering if this could still be a possibility.

Why not? If it is static fonts only, consider a Rename Glyphs parameter in the instances that need to switch. You can use a component copy (a=a.ital) and effectively duplicate the glyph with an alternate group.

I’ll DM a few of the reasons.

Variable fonts can’t have different classes for different masters. All masters need to have the same pairs and classes, only the values are different.
For static instances it is the same for all masters that need to be interpolated.

So there would be no issues with a static font that won’t be interpolated then?

If you have a static font that won’t be interpolated, why in the world are you bent on keeping it in the same file?