Seeking newby advice for setting up kerning classes

I am all kinds of confused about kerning classes. I have read what little I can find referencing this in the Glyphs and Fontlab manuals, as well as in the "Learn Fontlab Fast" book. I understand how to set up master characters in the classes panel (in Fontlab 5), but from there I am lost.

I seem to recall a Glyphs article by Rainer Scheichelbauer wherein (I think) he said that if one carefully sets accurate sidebearings, little manual kerning will be necessary.

Yet, a gentleman in France who kerns fonts as his trade told me he throws out all sidebearings and kerning settings upon receiving a kerning job and starts from scratch.

I have also read I should not be checking the boxes for both left and right master character classes; rather, I should be using only one side. Thus, I wonder why am I carefully setting up both sides? This seems to contradict the notion of sidebearings being important.

A very established type designer friend once told me Classes were the hardest part of font production to wrap their mind around. As I reread the classes sections of manuals for the umpteenth time, it is like reading a foreign language.

Can anyone shed some light on this topic? Is there a definitive comprehensible step-by-step tutorial somewhere on setting up kerning classes?

Thank you in advance for any help.

Kelly

Answers

  • John Hudson
    John Hudson Posts: 3,462
    edited 3:34PM
    Firstly, note that that the concept of key glyphs in classes—what I think you mean by ‘master characters’—is specific to FontLab Studio 5, and does not occur in other tools, including newer versions of FontLab. The key glyph concept was actually pretty useful if one knew how to work with it, and I occasionally wish it had been maintained in FontLab, because converting kerning from a single glyph to a class—e.g. when one adds a new diacritic letter to a font—is frustrating as currently implemented. But key glyphs are not part of the OpenType GPOS pairpos class format, so the way FontLab 8 and other tools work is closer to how the output fonts work.

    My approach is to define 1st and 2nd kern classes* based on general shape of the left and right sides of glyphs within a primary height zone. This latter concept isn’t really discussed much, but I think it is critical to keep in mind throughout the class assignments and then the kerning. So, for example, I consider the primary height zone for uppercase letters to be between the baseline and the cap height. So in many designs, D O Q and related diacritics go together in a 1st class, and C G O Q go together in a 2nd class, because these tend to share similar shape and sidebearings, respectively right and left, within the primary height zone.

    Obviously, in that example, the tail of the Q is outside the primary height zone, and that is what you keep in mind when you are kerning, because it will produce a number of exceptions to the class kerning.

    Narrow letters with diacritics above require a decision about whether to include in classes. I tend not to, because the number of exceptions when they follow T V W Y f etc. and relative to quotation marks, parentheses, or other punctuation tends to exceed the number of useful class kerns. So typically I do not put ì í î ï ǐ ĩ etc in classes, but kern them individually. [Recently, I have started putting /i.dotless into a class with î on the basis that this dotless variant is only going to be output from GSUB when it is followed by an above combining mark, so I want a method to kern it away from T V W Y f etc..]

    In terms of making the classes, once you have done it for one font, those classes can easily be copied to other projects with similar character sets, and then trimmed or extended as needed. I do encourage you to try to establish your classes as fully as possible before you start kerning, because converting kerning data to or from class kerning can be tricky. An important thing to bear in mind is that if you discover during the kerning that you need to split a class, e.g. the shape of the right side of D is not similar enough to O to be in the same class and is requiring too many exceptions, you need to first flatten the class kerning to pairs, then create any new class and move glyphs from one class to another, and then compress to class kerning to get existing kerning properly assigned to the revised classes. [I am describing a process to use in FontLab. What Glyphs does when compressing to class kerning appears to erase all exception kerns, which is terrifying and not useful.]

    There are a lot of well-made open source fonts now available, so you could download the source for one of those, open it in your font tool, and examine the class assignments. This can be more useful in understanding that trying to read a manual.

    _____

    *Note that I have spoken here about 1st and 2nd classes, rather than left or right classes. That’s my preferred way of thinking, because I am sometimes making fonts for bidirectional writing systems, and left is not always 1st and right is not always 2nd. Tools like FontLab and Glyphs use left and right designations, and if you’re only making Latin fonts it is fine to think in those terms.
  • George Thomas
    George Thomas Posts: 657
    @Kelly Hobkirk I have experienced your frustration in not understanding the kerning classes concept although mine was a lack of not being able to grasp how a certain feature in FontLab works.
    There are several other designers in your area who produce fonts. Offer to buy their lunch, then spend an hour or so with one of them and ask them to explain it. One-on-one help is usually much better than other ways.