MudgeFont 1.0.3


Table Of Contents

Overview
Screenshots
What's Different?
What's New?
What's Been Removed?
What's Next?
Licensing
Version History

Overview

MudgeFont is a bitmapped font generator tool. You tell it what size bitmap you want, specify the font (face, height, weight, padding), and it will generate all the data you need to render that font on screen.

MudgeFont was originally written by Tom van Dijck, and was posted to Flipcode as the Code Of The Day on May 19th, 2003:

http://www.flipcode.com/cgi-bin/msg.cgi?showThread=COTD-FontGenerationTool&forum=cotd&id=-1
Mr. van Dijck then created a SourceForge project for it (here), and proceeded to drop off the face of the earth. This is unfortunate, because MudgeFont had a couple of flaws. But! MudgeFont came with full source, so I was able to fix everything major, and even add some features. And now I've released all my fixes to you, the general public. How lucky you are!

My MudgeFont web page is here:

http://www.midwinter.com/~larry/programming/mudgefont/
And you can download a fresh copy of the source code (with a prebuilt binary) here:
http://www.midwinter.com/~larry/programming/mudgefont/mudgefont.zip

Screenshots

Everybody likes screenshots. So here are a couple of exciting action shots of MudgeFont actively in action!

mudgefont.1.png
Mudgefont working over a lovely Futura medium font as a 256x256 texture.
mudgefont.2.png
Mudgefont operating on the same Futura medium font, but this time as a 512x512 texture. Since that affords you lots more space, I've made the font larger as a result. I also turned on "Show Rectangles" so you can see the characters delimited.
mudgefont.3.png
Mudgefont still on the same Futura medium font, but this time I've turned on "Force Monospaced" (and reduced the font size accordingly).
mudgefont.4.png
Restored the font to proportionally-spaced, and added some extra border padding below the '/' character (on the top line).

What's Different?

Here is the complete list of changes I've made to the original MudgeFont source:

What's New?

I added a Python script, mudgefontxmlto.py, which makes it easy to convert the XML file into another format. Currently it supports three formats: INI, C, and my own funny text file format "Twiddle". Feel free to hack it up so it writes the file format you need. Just create a new subclass of writer and overload the __init__(), write(), and (optionally) close() methods as you need. If you know any Python at all (and you should!) you won't have any trouble.

What's Been Removed?

Just one thing so far: I've disabled the hacked-up downsampling "antialiasing". A Flipcode user named "Steven Wittens" posted to the discussion saying it was a bad idea:

Never, ever, EVER anti-alias text by downsampling a high-resolution version. This is exactly what has caused a lot of people to dismiss text anti-aliasing as simple blurring. By downsampling, edges will lie on half-pixel offsets and will become blurry.

A properly anti-aliased letter will still have sharp, crisp edges, but also smooth curves where necessary. This is done through hinting, and all this work is destroyed if you downsample.

Sounds right to me. For now, the field is still supported; it's just that the controls on the dialog box have been disabled. It'll probably be completely removed in a future revision (if there ever is one).

What's Next?

Probably not a lot. MudgeFont now does everything that I need, and is pretty well behaved. It has some warts, but nothing I haven't gotten used to. So I'm not likely to spend a lot of time on it from here on out.

That said, I'd welcome submissions. Or, heck, even notes of thanks. (Haven't gotten a single email about MudgeFont... you people sure are quiet!)

Licensing

Here is the original license that shipped with MudgeFont:

/**
 * Copyright (c) 2003 mudGE Entertainment
 * 
 * This software is provided 'as-is', without any express or implied warranty. 
 * In no event will the authors be held liable for any damages arising 
 * from the use of this software.
 * 
 * Permission is granted to anyone to use this software for any purpose, 
 * including commercial applications, and to alter it and redistribute 
 * it freely, subject to the following restrictions:
 * 
 * 1. The origin of this software must not be misrepresented; 
 *    you must not claim that you wrote the original software. 
 *    If you use this software in a product, an acknowledgment 
 *    in the product documentation would be appreciated but is not required.
 * 
 * 2. Altered source versions must be plainly marked as such, and must 
 *    not be misrepresented as being the original software.
 * 
 * 3. This notice may not be removed or altered from any source distribution.
 * 
 */
I have added the following rider:
/*
** Changes Copyright 2004 Larry Hastings
** 
** All my changes are released with the same license as the above.
** 
*/
In non-legalese, this license allows you to do anything you like with the software, except claim that you wrote the original version.

Version History

1.0.3
Saturday, September 11th, 2004
  • Changed the "Add Characters" dialog into the wonderful "Edit Characters" dialog.
  • Added top and bottom border offsets for individual characters. This meant I needed to store more data in the middle of the save file, which in turn meant...
  • Changed the save file format. Now if the first character is a zero, it means it's a versioned file. And while I was at it...
  • Changed the default file extension from ".fnt" to ".mudge".
  • Changed "Force Monospaced" from a simple checkbox to a list, where you can choose from four options: "Proportionally-spaced", "Force Monospaced", "Force Monospaced In X", and "Force Monospaced In Y".
  • Changed the save dialog boxes so they generate the filename for you and don't prompt you with "are you sure?".
  • Cleaned up the menu; added ellipses to items that bring up dialog boxes, and created the Help menu (which only has two entries).
  • Changed the TGA file writer for File Export code to use a packed struct.
  • Disabled the drop-down list that allowed you to turn on "anti-aliasing" (aka "downsampling from a higher-resolution version"). All it did was make your font blurrier around the edges.
  • Added an ugly icon. Maybe I'll do a better one someday.
1.0.2
Sunday, February 29th, 2004
  • Added "Force Monospaced".
  • Changed color of "Show Rectangles" rectangles to green. Stands out better against the black/white font, dontcha think?
  • Changed color of unused font background area from cyan to purple, so the green "Show Rectangles" stand out better.
1.0.1
Thursday, February 19th, 2004
The initial public release of my upgraded version.
1.0
Monday, May 19th, 2003
Tom van Dijck's initial public release.

Happy font generating!


larry