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).
Features:
- 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.
Usage:
Optionally, up to two filenames can be specified on the command line:
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.
27 comments:
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.
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 :)
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: https://www.dafont.com/haxrcorp-s8.font
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: https://mega.nz/file/t44CVRwZ#Nq7pGx568RdIzB9U1HAWE1wZfTrEILiH8QORWKi5jYc
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:
https://mega.nz/file/ZpgRBYpB#YOZ7PW1QWnoDzNWwwuujYlIPqJtdp5t948o9FMP6Rms
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.)
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.
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: https://mega.nz/file/I8RBzSBT#jH4b56otqCSgHds67DE2NDRg0RBlfFbWvb-ioVPy6X8
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:
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.
Hope that helps.
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.
Do you know if there's a FixedSys Mx (according to your notation, "mixed format") or equivalent?
If there isn't, could you make one, please?
I tried setting FixedSys Excelsior in Termux (an Android terminal app), but I felt it was slightly blurry).
An Mx would fix the issue.
Here is its Wikipedia link: https://en.wikipedia.org/wiki/FixedSys .
FixedSys was made in 1984/7, and was known as the Windows 1.0 and 2.0 (likely 2.1 too)'s font. It is a .FON.
Thanks.
Both the original and Excelsior are around in many parts, if you need access to the file.
It is even part of Wine.
An additional question: do you know if there's a font among your Pack which is basically FixedSys, or its origin?
The closest looking to it.
I notice this description might fit a whole lot of fonts.
Thanks again.
@Reden: FixedSys isn't part of the pack, since it was always purely a Windows font. But some others are visually close - maybe try the Toshiba Satellite fonts (ToshibaSat 8x14 for instance).
I'd be surprised if 'Mx'-type fonts could make a difference on Android, because the idea relies on including embedded bitmaps, which are the same pixel size as the original raster font. And the screen DPI in most typical Android devices is high, so the original pixel size is far too small to be useful, and at other sizes these bitmaps have no effect.
I wouldn't even be sure that font rendering on Android supports embedded bitmaps at all. Could be interesting to experiment, but I wouldn't hold out too much hope.
Fontraption is well done. Thanks for sharing it. Have some characters modified on one of provided 9x14 font. 80x28 text screen (three extra lines) looks great on 5:4 monitor (real DOS 6.2), especially when font designer take care on 9th pixel. I like "m" with all three lines two pixels wide. Text looks better than original 9x16 font from ROM on default 80x25 text mode 3. Thanks VileR.
Is there an easy workflow to go from Fontraption to .TTF/WOFF files, or is this a bad idea in general? Sorry if this has been answered before!
Oh, also! - is there anywhere we can find Fontraption running in a web based DOSbox? It shouldn't be too hard, no?
@montag: for some definition of "easy", there probably is - I'd try to export the font as .BMP from Fontraption, then convert to .png and use something like Bits'n'Picas to trace the bitmap into a .TTF font. You might have to fix encodings and metrics however, so for that I'd probably go with FontForge.
Web-based DOSBox? Don't know; never really messed with that to be honest...
Many thanks for sharing your amazing work.
Just wanted to express my appreciation for this tool. Kicking ass yet again, VileR. =)
This is exactly what I needed to edit high ASCII characters for MS-DOS UI design sessions in The Draw or Acid Draw. With the classical FONTEDIT, I was only able to edit low ASCII characters and the font changes didn't persist when loading The Draw or Acid Draw. They worked in DOS Edit, so I about to give up and just use that instead and cram my changes into low ASCII. But I decided to check out your program before committing to that, and I'm glad I did.
You really saved me here. Thank you!
Is there any particular reason you don't have mouse support?
@Jekuthiel: I've always found mouse drawing in programs like FONTEDIT to be kind of inconvenient (probably because of that clumsy 'block' cursor), so I'm personally used to the keyboard for this sort of thing. But I'm thinking of adding mouse support at some point - it'll just need more precise handling, like Norton Commander or Impulse Tracker, with smooth movement and sub-character sensitivity. There's an update coming soon with a couple of tiny bug fixes, but maybe in the next one after that.
Anyway, happy you're finding it useful! If you want custom fonts in a DOS screen designer/ANSI editor, there's also Empathy, which is like ACiDDraw but has its own built-in font editor (and XBIN support)... the font editor doesn't have as many features, but it's still handy to be able to change the font and the screen contents within the same program.
Hey!
Amazing work! I am just wondering if there is a way f creating a .ttf of any of these fonts into the dot-matrix equivalent from a printer like DEC LA50.
@Bombocclatt: hm, that depends on what you're aiming at - most of these screen fonts don't really have printer equivalents, since the dot-matrix font depends on the printer itself, and tends to be quite different from the text mode font you see on the screen (there's a whole different set of constraints).
But if you just want to give these fonts a dot-matrix look, Fontstruct is handy for this sort of thing (it has brushes that look like circular dots and so on, and you can export to .ttf)... a lot of manual work though.
Hi, sorry if this isn't the right place to ask this, but how would you instruct DOSBox to use a font exported by Fontraption?
@C just like you would in 'real' DOS. If you export as a .COM file, you can run it at any time to set the active font, and if you select "persist for BIOS text modes" in the export options it will also 'stick' when the mode is changed.
@VileR Thank you for the lightning fast reply and the amazing program! <3
Suggestion: New feature - convert fonts into .bmp files.
I really need that.
You can already save as .BMP, just go to the export menu (Ctrl+E) and select BMP as the format.
XBIN and COM cannot be imported although they are vaild .