My fonts, created via the MakeSpriteFont tool appear a little blurry/fuzzy to me. This has been bugging me for a while and today I decided to look into it. The source is definitely the tool, not my shaders or settings (I don't render with the sprite batch
in this tool kit).
I'm a font-noob so I looked at how MakeSpriteFont draws the fonts and then created a test app to show me samples of a font with various render settings.
Here is an image showing the various rendering settings:
Since every pixel matters here, you probably want to view it full size (it is a lossless image).
The font I used for an example is Consolas at 12 point. The red arrow points to the rendering settings that MakeSpriteFront uses.
The columns have the same pixel offset mode, the groupings have the same interpolation mode, and the lines within a group represent the text rendering hints. The sample strings have mode acronymns appended "pixelOffset/Interp/renderHint".
I included the ClearType version for comparison (the middle line of the groups).
The settings used by MakeSpriteFont tend to make a blurrier glyph; at small font sizes anyway. I didn't compare the modes with large font sizes.
The pixel offset setting makes the biggest difference. The None and HighSpeed settings make crisper text. In particular, if you look at the glyphs generated you can see quite a difference in letters like E and F. With the tool's default settings E and F get
a trunk that looks ok, but the arms come out faded. With the None/HS settings the arms and trunk both look good.
The following two images were created by MakeSpriteFont:
Changed Settings (Pixel offset = None):
As far as I can tell, the interpolation setting doesn't do anything; which makes sense, the docs say it is for scaling and rotation. It is set in MakeSpriteFont so I included it for completeness. I compared the results of the PixelOffset=None lines and they
are identical across all the interpolation settings.
I tried a few different fonts and the results are consistently sharper setting PixelOffset to None. I don't know if that is always the case.
My request: Make the PixelOffset and TextRenderingHint adjustable via the command line. I also have doubts about the current settings for defaults as well. I haven't seen any cases (though perhaps bigger fonts it does) where the current settings give better
This is easy enough to fix for myself, but I think some others might find the crisper text useful, and it would be nice to be able to tweak the extra rendering params per font to tailor the appearance easily.