Expanding kerning can be used to automatically add kerning pairs. Those pairs are redundant for apps which support OpenType kerning classes.
When you expand kerning classes, applications which don't support OpenType kerning classes can still display the expanded kerning. It's not as good as class kerning as the number of pairs is limited, but it's better than nothing.
Example: All my fonts allow Cufon embedding. Cufon embedding doesn't support kerning classes. If I didn't expand the kerning classes, only the class parents would be kerned. In my case, that would mean no kerning for commas, smart quotes, double straight quotes, base quotes. In some cases, no kerning for Q and V. In an all caps font, the "lowercase" glyphs would have no kerning at all. So some kerning expansion is always necessary when generating OpenType fonts . . . . unless you don't care how your fonts look in apps which don't support OpenType classes. Of course, I could manually copy the kerning to important glyphs but that's not going to happen.
I limit the number of kerns I expanded to 2048. I've found that expanding too many pairs can cause all OpenType features to break in some apps. Let's say I have an all caps font with a few hundred accented glyphs. I have a font called Meloriac which is an all caps geometric. The O is a parent to a lot of other circular glyphs. There's very little kerning for the class parents. If I didn't set a limit for the number of pairs that wpould be expanded, the kerning would expand to over 36000 pairs. I'd hate to expand to 2048 kerns and find that Vietnamese accents took higher priority than the comma, quotes or the "lowercase" set.
33952 pairs will be omitted when I expand. How does the expand kerning code decide which glyphs get kerned first? Does the order of classes have any effect of the priority or expansion? What about the order of child glyphs within each class? The reason I am asking is because out of habit, I create classes for period, quotes and hyphens last. Since they should be high priority glyphs, should I putting those classes at the beginning? Does the index, name table or unicode order have an effect on kerning expansion priority?
I'm away that I can limit expansion to a certain codepage, but how is priority decided within that codepage?
Perhaps the only person who can answer this is the person who wrote the code for expanding kerning. I'm hoping one of the FL coders will take notice of this thread.