This is not an undocumented subject; however, I didn’t find everything I needed in a single place; so this is my single point of reference.
The Problem
There is currently no facility within MonoGame to create a new Sprite Font. The workaround described below is, to put it mildly, time consuming.
Adding a Font
Step 1
The first step is to download Visual Studio 2010
This is the only download link to the express edition (obviously if you have an MSDN license, you can get the full edition. VS Express has now been replaced by the Community Edition, but that’s VS2013.
Step 2
Next, you need to download XNA Game Studio
… and install it.
Step 3
Now, load up VS2010 and create a new XNA game:
You should end up with a project that looks like this:
Step 4
In the Content Project, add a new file:
… and add a new SpriteFont:
Step 5
If you now open the file, you can edit key aspects of the font, such as size, font name, etc…:
Step 6
To test, make the following changes in the main project (Game1.cs):
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
spriteBatch = new SpriteBatch(GraphicsDevice);
Font1 = Content.Load<SpriteFont>("SpriteFont2");
FontPos = new Vector2(graphics.GraphicsDevice.Viewport.Width / 2, graphics.GraphicsDevice.Viewport.Height / 2);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
string output = "abcdefghijklmnopqrstuvwxyz!";
Vector2 FontOrigin = Font1.MeasureString(output) / 2;
spriteBatch.DrawString(Font1, output, FontPos, Color.Black,
0, FontOrigin, 1.0f, SpriteEffects.None, 0.5f);
spriteBatch.End();
base.Draw(gameTime);
}
Step 7
Run the project:
Step 8
Okay, now you have a font (the font was compiled when you ran the project in the previous step). Locate the compiled font:
Step 9
Copy the compiled font to your MonoGame content directory.
Step 10
Set the properties of the font to be Content:
Step 11
You’re done, you can now use it in your project in the same manner as you did in the test project earlier.
Conclusion
Work is underway to incorporate this into MonoGame. However, it’s still a massively painful process!
References
Below are some useful links that I found (I’d be happy to add more, or just leave a comment):
http://www.c-sharpcorner.com/uploadfile/iersoy/how-to-use-spritefont-in-xna/
http://gamedev.stackexchange.com/questions/46128/how-to-generate-spritefonts-for-monogame
http://stackoverflow.com/questions/18268413/loading-a-font-using-monogame-with-vs2012-13