I am designing a file format for storing fonts, it will be used in my game where i need to draw ASCII text on the screen. At first i thought that i needed to keep a separate kern table for every character in the font, but after researching i found out that many font file formats used in games don't have any kern tables at all (e.g., Arma's FXY font https://community.bistudio.com/wiki/FXY_File_Format), they just use one offset for each character to determine where to draw the next character. Is this enough for simple ASCII text?Are there any drawbacks/limitations?
Should each font character have it's own kern table?
213 views Asked by oriyon At
1
"Simple ASCII text" has nothing to do with kerning. Some of the (potentially) most ugly kerning candidates are in the Simple ASCII range; even with all-caps text only you can expect "AV" and "TA" combos.
Whether or not to include kerning in your text engine depends on some factors not mentioned in your post:
Even the act of only having to check every combination for possible kerning is time consuming, whether or not it results in an adjustment. For fastest performance, you can have a list of adjustment values for every character per character -- essentially, for 96 characters you need 96 * 96 lookups. Any other algorithm is possible (e.g., a linked list per character) but will be slower -- and can use less memory.
Also, not every possible character combo needs kerning information. You should design your font with built-in white space left and right, the so-called "side bearing". This 'natural' spacing would only need adjustment for as little as possible combinations.
All in all, It Depends. Best is to try both: without and with kerning. Estimate the negative impact on the performance against the positive of the "looks", and decide which one you prefer.