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?