I had come up with the idea of starting with rough kerning, with very few classes, and then gradually refine it.
I grouped e.g. lowercase letters according to the height at which their body (i.e., ignoring extenders) extended the most (to the relevant side): top, middle or bottom.
For example, I put r and v in the same 1st (left) kerning class, since they both extended (to the right) more at the top than at the bottom.
For lowercase letters I ended up with only four 1st kerning classes: the v class, the a class (bottom), the o class (middle) and the x class (top + bottom).
The result of that first kerning round was quite good. Most pairs that had been inadequately-spaced before were still inadequately spaced, but almost all of them got much better.
Next I split some of those classes into two.
For every class I split, I had to kern both its child classes against every class the parent class had been kerned against.
That already started to look like a lot of mess.
(Maybe I should write a plugin that would let you split a class and have the child classes automatically inherit the kerning information from the parent class. The problem is that I use mainly FL7, which isn't plugin-friendly. Are you aware of something like that?)
The next logical step would be to continue in this fashion, possibly ending up with a separate class for almost each lowercase letter, like in many well-kerned fonts.
But how I do I keep track of the exponentially-growing number of classes and pairs involved?
Any tips? What's your method?
1
Comments
When I add more classes, I'll always keep it in alphabetical order. For Cyrillic, I have silly names to help me remember what they are. The soft signs Ь ь are FlipPR and flipPR (flippers). The right side of Ц ц are SlugR and slugR. (sluggers). The class names are irrelevant to the compiled font so you can name them whatever you like.
Most classes have separate left and right. My doublesided classes are usually: S, s, W, period, hyphen, left and right guillemots.
It would be much easier if the quality of the font is the main factor of its success, then we could focus on quality and be sure it will pay off eventually.
But I don't believe that good kerning makes the font bestseller. So I look for an acceptable kerning for the first version and then improve it later.
Like you, I also sometimes tend to make a few classes like 5-7 for caps, 5-7 for lowercase, 3-5 for punctuation. I put T and Y in the same category for example because they have a similar distribution of space. The actual spacing difference is often already regulated by different sidebearings.
The drawback of this approach is an insanely high number of pairs (fewer categories—more pairs in effect). The typeface I am working on has about 350 characters and 16000 kerning pairs. The final font file has less than 200KB so I am still not worried about it.
Anyway, far from perfect, but I like the idea of making the kerning for the first version in a day or so. I think it's fair to make the font a bit cheaper until I make the kerning be professional quality. The price should be agile too
Yes, I manually copy the kerning each time I split. It's really not much work: in FLS5, I copy the glyph, paste special to the new parent and check the kerning box. Take a few seconds.
It might happen 4 or 5 times for each typeface so it doesn't add much to my workload. Sometimes my plan works out and I don't need to do any class splits.
@Igor Petrovic
I agree about versioning. But If you have a font with 350 characters and you need 16000 pairs, you need to get more agressive with your kerning classes. My current fonts have over 700 glyphs and I rarely crack 1000. It's not just about reducing workload: less kerns=less chance for errors. You'd be suprised how many seemingly reckless class inclusions turn out fine. It really depends on the font. For example, including the right side of the e in the o class. It may seemsreckless but sometimes it works out and there's a hundred or so kerns saved. With Greek you can get cheeky with the Latin classes depending on the design. And it doesn't woro out, make a split.
Also, I had really ugly cap-to-low gaps, and no OT features at hand which increased the volume of kerning pairs.
Anyway, I also think that e and o, for example, can go to the same class on both left and right sides and that the difference on the right side is already compensated by side bearings more often than expected. In a nutshell, I think that it's good to establish the workflow for rough but quick kerning
There is also a kerning window that shows a list of all the kerning in the font (class and non-class). You make kerning exceptions by clicking the "lock" icon in the glyph palette to unlock a kerning pair from the class value. (@ indicates a kerning class.)
That is, as soon as I have some free time...
As many things in Fontlab the approach is often "overcrowded” (or there are too many ways to approach them) but I like how effective and visual it is.
Also, the kerning windows seems to be very very similar.
I'm excited about this plugin by Tim Ahrens, which might turn out to speed things up a bit
But if you don't have a clear vision of the end result or if you want the option to stop once the kerning is okay even if not perfect, then I think my approach makes sense.