This is a follow up to the recent kerning pairs thread, but I have some new evidence, and new bafflement.
I have developed a font over quite a long period. It has 100 kerning pairs as reported in the caption of Font Creator’s kerning pairs window, and the list looks about that long. [I’ve experimented over the history of the font and forget how most of them got there, but I’ll concentrate here on 3 pairs which I added last week.] In the preview toolbar:
Some results:
-
Of these only the AV one is rendered in the Font Creator test window.
-
If I switch on font-kerning in Word 2007, then, of these, it too only renders AV.
-
So I experimented with my own program using Windows GDI functions. (Non-programmers please see technical note appended.) Drawn large enough on the screen the AV kerning is rendered, but the others aren’t.
Further experiment:
I’ve just discovered a new (to me) Windows function ‘GetKerningPairs()’ with which, having loaded a font, you can ask which symbols constitute kerning pairs, and by how much their spacing is altered.
With my font, loaded (for the screen) at a size where capitals are 24 pixels high, there aren’t any. But loaded (for printing) such that capitals are 296 pixels high, it reports 909 kerning pairs! Many of them, it appears, involve symbols which are not even in the font! However, they do include AV, and don’t include the other two shown above!
Conclusion:
So despite the weirdness of the GetKerningPairs() function, it appears that two of the three cases illustrated above, the kerning is not being exported. But it is shown in the Font-Creator preview toolbar.
Questions:
Is there some special coding behind the preview toolbar window?
Is it possible that Font Creator does not export some kerning pairs?
Dave
Appendix on programming Windows:
“GDI” (the Graphics Drawing Interface) is the traditional Windows library for drawing things, including text, where it is nowadays updated to use strings of Unicode characters, encoded in UTF-16. To use it, you first create a ‘device context’ (DC) for the screen or printer, then load a font into the DC (at the desired size), and then use library functions with names like TextOut(), ExtTextOut(), and DrawText() to output the text. After loading the font, you can also use the GetKerningPairs() function on the DC to find out which pairs should kern.