Do anyone know any algorithm which would calculate automatically kerning of characters based on glyph shapes when user types text?
I don't mean trivial calculation of advance widths or similar, I mean analyzing the shape of glyphs to estimate the visually optimal distance between characters. For example if we lay out three characters sequentially in a line, the middle character should SEEM to be in the center of the line despite of the character's shapes. An example enlightens the kerning-on-the-fly functionality:
An example of kerning-on-the-fly can be seen from below snapshot:
In the above image a
seems to be too right. It should be shifted a certain amount towards T
so that it seems to be in the middle of T
and g
. The algorithm should examine the shapes of T
and a
(and possibly other letters also) and decide how much a
have to be shifted to the left. This certain amount is the thing that the algorithm should calculate - WITHOUT EXAMINING THE POSSIBLE KERNING PAIRS OF THE FONT.
I'm thinking of coding a javascript (+svg+html) program that uses hand drawn fonts and many of them lacks kerning pairs. The textfields will be editable and can include text of multiple fonts. I think that kerning-on-the-fly could be one way to ensure mean text flow in this case.
EDIT: One starting point to this could be to use svg font, so it's easy to get path values. In svg font the path is defined this way:
The algorithm (or javascript code) should examine those paths some way and determine the optimal distance between them.