what i did was divide texture in 28 x 32 grid for each 256-32 characters (Spacebar is no character, you can manually move caret forward). You can draw each character in the middle of their cell, so you don't need to worry about spacing and relations between them.

For 256x256 texture it would mean 8x9 pixels for each character, leaving a little empty space at bottom. It is well enough for common fonts. 512x512 would allow more detail with 16x18 character size, at great cost of memory use. Still i'd rather use the memory for this rather than draw fonts geometrically. Simple quad will always be 100 times faster to render especially if you optimize it with arrays, displaylists or such.