Fontraption (a VGA Text Mode Font Editor)

Shots (click to zoom):
Fontraption (a VGA Text Mode Font Editor)
Fontraption (a VGA Text Mode Font Editor)
Fontraption (a VGA Text Mode Font Editor)
Fontraption (a VGA Text Mode Font Editor)
Fontraption (a VGA Text Mode Font Editor)
Fontraption (a VGA Text Mode Font Editor)
Fontraption (a VGA Text Mode Font Editor)

There are many VGA text mode font editors out in the wild: the "classic" one is FONTEDIT, published in PC Magazine all the way back in 1988.  They're all functional, but either lack some niceties or have certain annoyances, so here's yet another go at the concept.

I've always been used to FONTEDIT (when our household's XT clone got a shiny new EGA upgrade, I actually typed the program in from the magazine article), so Fontraption is based on a similar interface, which I tried to keep as simple and intuitive as possible.

Get it:

Assembly source is available, plus over a thousand fonts so you'll have something to play around with (yep, the stuff from from the Oldschool PC font pack is in there too).

Download Fontraption (latest release)
Download font collection
(Updated 2020-09-16: downloads moved to GitHub)


  • Edit two fonts at a time, using tabs to keep the UI consistent
  • Flexible clipboard transfer of full/partial characters or character ranges
  • Various block manipulation functions: flip X/Y, fill/erase, invert, slide
  • Grab any of the built-in fonts from the VGA BIOS ROM
  • Save/load as raw binary data; import/export BMP, XBIN and COM (plain/TSR)
  • Supports any font height that VGA text mode can handle, up to 32 lines
  • Preview your font in 40 or 80 columns (8 or 9 pixels per column)
  • Uses pure text mode for speed; runs on any VGA-capable system (8088 and up)
  • Various palettes, a decent file browser, etc.

Hardware Requirements:

  • IBM PC or compatible
  • VGA-compatible video
  • DOS 3.0+
  • 224 KB of free conventional RAM

DOSBox Requirements:

To run it correctly in DOSBox, you'll want to do the following:

  • Use a CURRENT (SVN) build of DOSBox, not 0.74 (or 0.74-2).  The latest DOSBox codebase fixes many issues related to VGA font widths, aspect correction, scaling, cursor handling, and so on.  

  • Set "machine" to "vgaonly" in your DOSBox config file, otherwise 9-dots-per-column mode (F8) is disabled.  9 dots is the default with real (S)VGA hardware, and in DOSBox's "vgaonly" mode, but the "svga"/"vesa" machines force all text modes to 8 for some reason.  
    If you REALLY want to, you can force Fontraption to allow 9-dot mode regardless of DOSBox's machine type, by pressing Ctrl+Alt+9.  Just don't expect things to look right if you do that - this option exists in case DOSBox changes its behavior in the future, or for certain forks (like DOSBox-X) that control it with a separate config option.


Optionally, up to two filenames can be specified on the command line:

FRAPT [file1 [file2]]

If they appear to be valid font files, they will be loaded as fonts 1 and 2 respectively. If you leave out one or both filenames, the VGA font active at runtime will be used instead.

As for the rest, most of it should be self-explanatory really.  RTFM if it isn't + have fun.


Bruh says:

Do you plan on updating your Oldschool PC font pack at any poin in the future?

I do, but that point keeps getting pushed farther into the future by other things... if there's anything specific you'd like to see in an update, lemme know and I'll see what I can do about it.

Haakon says:

Came here for the Oldschool PC font, but love the site design and content too. Definitely takes me back to the "days of yore"

Where can I get a copy of that Iron Maiden Eddie font? Would love to turn that into an xbimage for my BBS.

It's included in the program download, in IMPORT\EDDIE1.BMP :)

Gn says:

By any chance, would you be able to make a pixel outline "Plus" Unicode .ttf font of a Bitmap .fon font that was made for Windows from 2004?

It contains a lot of erroneously mapped glyphs which should be corrected. But if it matters at all, it's a very good looking font. I'm currently using it as my system font.

The only functioning download link I've been able to find online is:

However, the version of the font I have on my system differs somewhat and has a few extra glyphs for Greek letters that are all erroneously mapped (i.e. Displays ² as Ω). It also has far more erroneously mapped glyphs (which I ironically painstakingly reordered & redrew in FontForge before I bothered Googling & found that online download. I've linked my FontForge .sfd file below as well.)

I was actually looking for a way to do this myself to correct the poorly mapped glyphs and add additional unicode glyphs, but having no prior experience, was stuck on finding a way to trace bitmap fonts that was not insanely tedious, and happened to stumble across your site following a link from StackOverflow.

I haven't been able to find the version of the font on my system for download at all, so I've uploaded it here as it has the additional Greek glyphs:

The FontForge .sfd file for my WIP fixed version of the font I've uploaded too. It is resized to standard 2048 Em Size and has the positions of the erroneous glyphs corrected, but does not contain the Greek glyphs. It also contains a few glyphs I drew/redrew myself. If you're willing to do this, it might provide a good starting point:

On the other hand, I completely understand if you decline. "Bits'N'Picas" mentioned in your FAQ seems to be exactly what I was trying to look for but couldn't find, so I might give this another stab myself.

(You're also very welcome to include the font in your Oldschool PC font pack, although I'm not sure if it's quite old or official enough to fit the bill.)

Gn says:

Apologies for another message. Evidently, I didn't test the actual font I "fixed". The glyphs I remapped have erroneously large spacing, so it might not be a great idea to start off with my FontForge .sfd file. I see it now after I've switched my system font.

Gn says:

This is the .sfd prior to resizing to 2048 Em Size. Does not have the erroneously large widths so should be a better starting point:

Resizing before tracing and converting to TrueType was the wrong choice, the better way would be to convert to TrueType first and then resize to 2048 Em Size. I'm feeling a bit more motivated now so I might try doing this myself.

Feel free to write me an email if you would like to reply to my messages.

@Gn: Replying here rather than by email, just in case others might find this helpful... who knows.  Anyway, some tips:

  • I wouldn't bother forcing an em size of 2048.  It's true that powers of 2 are "encouraged", but I'm yet to see a program, OS or rendering engine that cares about that in the slightest.  In my experience it makes no difference whatsoever.  For my own bitmap conversions, I just assign 100 em units for each source pixel - this ensures you can get good grid-fitting without worrying about non-integer coordinates.  A 13px bitmap font gets a .ttf em size of 1300, 16px becomes 1600, etc.

    Always worked fine for me.  Of course, if most of your work is already at that size, you might as well stick with it... but it's not mandatory in any way.

  • For Bits'n'Picas, which is what I'd recommend, you'll have to convert the .fon to a format it can handle.  It should be able to read .sfd with bitmap content, so you could just open the .fon with the Greek chars in FontForge, save as sfd, then trace with B'n'P.  Coincidentally, the default in B'n'P is also 100 em units per source pixel.

  • When you export TrueType from Bits'n'Picas, the encoding it generates probably won't map to your target.  FontForge can be scripted to fix that, but for a single font, I wouldn't bother - you can open that .ttf in FontForge, copy the traced glyphs, and paste them into your target font at the correct code points.

Hope that helps.

Gn says:

Thanks for the reply VileR. I'll give this a try in a couple of days when I'm free. The tips are greatly appreciated. (Evidently the better approach I would have known if I had any prior experience with Bitmap fonts, is to trace first, then map glyphs.)

I'm actually converting the font to TrueType and 2048 Em size for a different reason altogether, since I'm planning to merge the glyphs with another font I've already made to display Unicode characters that my system doesn't properly handle. Practically it certainly would make no difference if I only wanted a regular system font.

Write a response:

* Required.
Your email address will not be published.