Nice job on the font code! It is quite nice.
Text kerning may not be correct.
Since the font is packed one character at a time into a texture and then reassembled, the reassembled text probably does not have any text kerning.
The way I've seen this fixed is to render a whole string at a time, and draw it as a single quad.
TextureFont.MeasureString() does not properly return the size of the string.
This could either be caused by:
a) The Graphics.DrawString() not having StringFormat.GenericTypographic as a parameter, or
b) Since the font is being packed one character at a time into a texture, the rendering will not have the same kerning as Graphics.Drawstring().
In the past I have written font code using the TrueType library that creates a complete string at a time.
I have taken the Graphics.DrawString and Graphics.MeasureString and done the same in my own code.
It would be interesting to compare the .NET library font rendering to the TrueType library rendering.
It would also be interesting to compare the current implementation to a string at a time implementation to see kerning differences.
I may put together a comparison.
I am not 100% certain that the .NET font rendering does any kerning.