Written with Builder for quickness, you can specify the characters you want to include in the top edit box, then select any font on my PC with the Font button.
Generate then spits out a file in the format discussed below. The file starts with the number of characters included, then the width of a space character to save rendering a blank quad for spaces, then an index of 256 bytes, each of which either contains -1 or the index into the images for the ASCII character's associated image.
The images then follow with each one as a solid white square with the letter shape expressed through alpha values, in the same format as my existing sprite files.
My D3D library has been extended to include a CTextureFont class that can load one of these files and place the images onto a texture passed to it in the load method, so the font can either be placed on the same texture as the sprites to minimise DrawPrimitive calls, or on a seperate texture if it is needed.
CTextureFont then just has a Draw(X,Y,"A string") that adds the letters to the existing CQuadBuffer using the existing library, so the letters can be placed in the quad buffer along with any other sprites and all can be rendered through a single DrawPrimitive.
I need to add TextExtent methods for measuring the text, and I also need to extend the existing D3D library to allow for passing four different diffuse colours to the quad buffer so I can make shaded letters.
Otherwise, it all seems pretty hunky dorey and no longer requires me to mess about with manually clipping letters out of bitmaps.
Scaling the fonts with D3D doesn't seem to work very well so I'm sticking to a single size per font file. I was going to add the capability to have several different sizes in a single file, but then I thought that it would be more flexible to have a file per size since I can then discard sizes when they are not needed and reload them when they are a lot more easily.
So once the above changes have been finished, the font stuff is pretty much done and I've got no excuse not to get on with the game.
[EDIT] All sorted:
Coloured using the diffuse values and centred on the screen based on a TextExtent type method.
Shame I can't use that font, but I'm not sure where it came from.