Refactor string drawing functions
This branch implements general-use functions for drawing strings & measuring string width/height, and replaces the existing string drawing & measuring functions with #defines using these generalized functions, removing a lot of duplicated code in the process.
V_DrawFontStringAtFixed
- 
x,y: Thefixed_tcoordinates. - 
option: Video flags. - 
pscale,vscale: Thefixed_thorizontal & vertical scale at which the characters get drawn. These also affect space width and line spacing. - 
string: The string to draw. - 
font: A font definition (fontdef_t, see below). 
V_DrawAlignedFontStringAtFixed
- Similar to the above, but also allows centered and right-aligned drawing, which is set using a 
text_alignenum. - 
text_alignhas 3 options:align_left,align_centerandalign_right. - Unlike previous centered & right-aligned string drawing functions, this function properly aligns multi-line strings.
 
V_FontStringWidth & V_FontStringHeight
- 
string: The string to measure the width/height of, taking newlines into account. - 
option: Video flags. - 
font:A font definition (fontdef_t, see below). 
Instead of just patch_t arrays, fonts like hu_font or tny_font are now stored as the following structure, with some additional parameters:
fontdef_t
- 
chars[]: Thepatch_tarray containing all the font's graphics. - 
kerning: The distance between each character. Can also be negative, to move characters closer together. - 
spacewidth: The width of a space. - 
charwidth: The width of one character. Only used for old video flags likeV_MONOSPACEandV_OLDSPACING. - 
linespacing: The height difference between two lines, used for newlines. (Gets overridden byV_RETURN8, which sets it to 8.) 
Edited  by sphere