I’ve been fiddling around with font rendering again this weekend. For my upcoming game, I wanted
a cool intro effect like in some movies, where the displayed text is very very slowly expanding.
But I couldn’t quite replicate that effect with the XNA SpriteFont
class. Even with
antialiasing turned on, the borders of the text were flickering. Using very large font sizes
resulted in hopelessly oversized .xnb files with only a slight improvement for
the unsteady borders.
So my new solution was to write a component that renders vector-based text instead of bitmaps. Extracting the vector data from a font was a bit harder than I had expected because fonts consist mostly of complicated second and third order bezier curves. I managed to break these down into plain straight line segments and am now in the possession of a content pipeline importer that converts .ttf fonts into arrays of line segments. Behold:
Read More