Fontlab classbased kerning

Toby's picture

I

twardoch's picture

Tobias,

each FontLab kerning class has a "kerning scope", i.e. the information whether the kerning duplication should happen when the master glyph of a kerning class is used as first glyph or second glyph in a pair. This is what the checkboxes in Tools / Kerning Assistance define.

For example, you may have FontLab kerning classes (defined in the Classes panel):
_e1: e' oe eacute edieresis
_e2: e' eacute edieresis
_o1: o' oacute odieresis
_o2: o' oe oacute odieresis
_y: y' yacute ydieresis

In Kerning assistance, _e1 and _o1 should have first glyph scope only, i.e. they should be activated only via the checkbox on the left side. This is because the kerning duplication is supposed to happen only when the master glyph of the class occurs as the first glyph in the pair.

Analogically, _e2 and _o2 should be activated only via the checkbox on the right side because the kerning duplication is supposed to happen only when the master glyph of the class occurs as the second glyph in the pair.

Finally, _y can be activated on both sides since kerning should be duplicated in all situations.

Kerning classes don't need to limit themselves to accented glyphs only. In your case, you could make a class with the 2nd glyph scope (checkbox on the right side in Kerning Assistance) like following:

_m2: m' n ncedilla nacute

Nothing stops you from doing that.

However, it is true that in FontLab's own class kerning, classes cannot include classes, so something like:
_n: n' ncedilla nacute
_m2: m' @_n
is not possible.

"Class inheritance" is possible if you define your kerning directly in the OpenType panel (which is not the most user friendly thing to do :-) ) In the lower-right part of the OpenType panel, you can write OpenType class definitions:

@_n = [n ncedilla nacute];
@_m2 = [m @_n];

But I don't think this is useful for kerning. But Class inheritance is useful for writing other OpenType layout feature definitions. For example, you might define classes for default figures and old-style figures (to be used in the "onum" feature, for example) as well as a class for all figures (to be used in a different feature, e.g. "sups"):

@FIGS_DFLT = [zero one two three four five six seven eight nine];
@FIGS_ONUM = [zero.onum one.onum two.onum three.onum four.onum five.onum six.onum seven.onum eight.onum nine.onum];
@FIGS_ALL = [@FIGS_DFLT @FIGS_ONUM];

Regards,
Adam Twardoch
Fontlab Ltd.

Toby's picture

OK, I think I got most of that, and I was on it myself too.
Thanks a lot. Let

twardoch's picture

You don't need to have one-glyph classes. In FontLab, you always kern glyphs. The classes only contain information to which _other_ glyphs one wants the kerning values to apply.

> Let

Toby's picture

It

Syndicate content Syndicate content