The Ultimate Oldschool PC Font Pack (v1.0) - Documentation
- Pack contents
- Font sizes & display
- Formats & encodings
- DOS character map ('Px437') notes
- Extended Unicode character set ('PxPlus') notes
- Misc. usage notes
- Credits & acknowledgements
- Legal stuff
The Ultimate Oldschool PC Font Pack started out with the idea of paying tribute to ancient PCs and their bitmapped, pre-GUI typography (if you can call it that). It was inspired by similar efforts that cover other vintage machines: classic system fonts from the Amiga, C64, Apple II, Mac, ZX Spectrum, Atari 8-bit/ST etc. are all celebrated. On the other hand, the IBM PC and its clones seem to get little love... except for that one VGA text mode font (which has been remade numerous times, to varying degrees of success). This collection is here to remedy that, and to bring you pixel-perfect remakes of various type styles from text-mode era PCs - in modern, multi-platform, Unicode-compatible TrueType form (plus straight bitmap versions). Although the goal is to make it a complete resource, the main focus is on hardware character sets: the kind that's located in a ROM chip on the system board or graphics card, which is what you'd see by default when working in text (or graphics) mode. Software-loadable fonts are also within the scope of this collection (if associated with a particular machine or display system), so some of these have also made it in.
The collection includes 185 font files in total (made up of 81 different typefaces). All styles are available with the CP437 character set (DOS Latin-US), in both .FON and .TTF formats, and 23 of them also have expanded Unicode versions ('PxPlus', .TTF only).
Here's a quick rundown of what's inside - check out the detailed fonts page for more info on what's what, and the next few sections for the lowdown on formats and encodings.
Font Sizes: Charset: Style Pixel Pt 437 Plus ════════════════ ════════ ════════ AMI BIOS 8x8 6 ■ AMI BIOS-2y 8x16 12 ■ AmstradPC1512 8x8 6 ■ ■ AmstradPC1512-2y 8x16 12 ■ ■ AT&T PC6300 8x16 12 ■ AT&T PC6300-2x 16x16 12 ■ ATI 8x14 8x14 12 ■ ATI 8x16 8x16 12 ■ ATI 8x8 8x8 6 ■ ATI 8x8-2y 8x16 12 ■ ATI 9x14 9x14 12 ■ ATI 9x16 9x16 12 ■ ATI SmallW 6x8 6x8 6 ■ CompaqThin 8x14 8x14 12 ■ CompaqThin 8x16 8x16 12 ■ CompaqThin 8x8 8x8 6 ■ DTK BIOS 8x8 6 ■ DTK BIOS-2y 8x16 12 ■ IBM 3270pc 9x14 12 ■ IBM BIOS 8x8 6 ■ ■ IBM BIOS-2x 16x8 6 ■ ■ IBM BIOS-2y 8x16 12 ■ ■ IBM CGA 8x8 6 ■ ■ IBM CGA-2y 8x16 12 ■ ■ IBM CGAthin 8x8 6 ■ ■ IBM CGAthin-2y 8x16 12 ■ ■ IBM Conv 8x8 6 ■
Font Sizes: Charset: Style Pixel Pt 437 Plus ════════════════ ════════ ════════ IBM Conv-2x 16x8 6 ■ IBM Conv-2y 8x16 12 ■ IBM EGA8 8x14 12 ■ ■ IBM EGA8-2x 16x14 12 ■ ■ IBM EGA9 9x14 12 ■ ■ IBM EGA9-2x 18x14 12 ■ ■ IBM ISO8 8x16 12 ■ IBM ISO9 9x16 12 ■ IBM MDA 9x14 12 ■ ■ IBM PGC 8x16 12 ■ IBM PGC-2x 16x16 12 ■ IBM PS/2thin1 8x16 12 ■ IBM PS/2thin2 8x16 12 ■ IBM PS/2thin3 8x16 12 ■ IBM PS/2thin4 8x16 12 ■ IBM VGA8 8x16 12 ■ ■ IBM VGA8-2x 16x16 12 ■ ■ IBM VGA9 9x16 12 ■ ■ IBM VGA9-2x 18x16 12 ■ ■ ITT BIOS 8x8 6 ■ ITT BIOS-2y 8x16 12 ■ Kaypro2K 8x8 6 ■ Kaypro2K-2y 8x16 12 ■ Phoenix BIOS 8x8 6 ■ Phoenix BIOS-2y 8x16 12 ■ PhoenixEGA 8x14 8x14 12 ■ PhoenixEGA 8x16 8x16 12 ■
Font Sizes: Charset: Style Pixel Pt 437 Plus ═════════════════ ════════ ════════ PhoenixEGA 8x8 8x8 6 ■ PhoenixEGA 8x8-2y 8x16 12 ■ PhoenixEGA 9x14 9x14 12 ■ TandyNew 225 8x9 9 ■ ■ TandyNew 225-2y 8x18 18 ■ ■ TandyNew Mono 9x14 12 ■ TandyNew TV 8x8 6 ■ ■ TandyNew TV-2y 8x16 12 ■ ■ TandyOld 225 8x9 9 ■ TandyOld 225-2y 8x18 18 ■ TandyOld TV 8x8 6 ■ TandyOld TV-2y 8x16 12 ■ ToshibaLCD 8x16 8x16 12 ■ ToshibaLCD 8x8 8x8 6 ■ Verite 8x14 8x14 12 ■ Verite 8x16 8x16 12 ■ Verite 8x8 8x8 6 ■ Verite 8x8-2y 8x16 12 ■ Verite 9x14 9x14 12 ■ Verite 9x16 9x16 12 ■ VGA SquarePx 8x19 18 ■ ■ VTech BIOS 8x8 6 ■ VTech BIOS-2y 8x16 12 ■ Wyse700a 16x16 12 ■ Wyse700a-2y 16x32 24 ■ Wyse700b 16x16 12 ■ Wyse700b-2y 16x32 24 ■
NOTE: the 'pt' sizes listed are for a screen density of 96 PPI (see below)
Font Sizes & Display
Pixel & Point Sizes
TrueType fonts have scalable outlines, but to reproduce oldschool raster characters, the outlines are designed to snap to the pixel grid at one particular font size. Obviously this "native" size differs from font to font, but each font will look best at that native size (or integer multiples thereof). Otherwise you *will* get fugly scaling artifacts. This size depends on the original font's pixel dimensions, but scalable text is usually measured in points (pt). The resulting pixel size (px) depends on your PPI settings: common standards are based on multiples of 96 PPI (Windows: 1pt = 3/4px) or 72 PPI (Mac: 1pt = 1px). The font metrics have been tuned so that the "native" point size is an integer in both systems, so with 96 DPI it'll be a multiple of 3, and with 72 DPI a multiple of 4. On newfangled super-high-PPI displays scaling artifacts become less apparent, so you may be able to get away with arbitrary sizes.
All fonts replicate the original bitmap characters for modern square-pixel displays. However, the original fonts were (mostly) used in various non-square pixel resolutions, so aspect ratio is not preserved: most of these fonts will be somewhat squashed vertically, compared to their appearance on original hardware. Aspect-corrected variants may be added in the future.
Formats & Encodings
Fonts in this pack come in three variants. Each font has at least the first two:
Px437: TrueType (TTF), CP437 charset
These fonts feature the classic set of 256 characters established by the original PC, also known as Code Page 437 (or PC ASCII, Latin-US DOS/OEM, and other catchy names). They are exact duplicates of the original pixel fonts in outline form, and characters are Unicode-mapped for maximum compatibility (see below for details).
Bm437: Bitmap (FON), CP437 charset
Bitmap versions of the above. Available only in Windows .FON format for now, but other versions may be added at some point. The straight bitmap conversions may still be more useful than TrueType in certain situations:
* You don't need to modify the registry to use them in the Windows console.
* The .FON format isn't Unicode, so these versions can force the CP437 encoding on misbehaving programs.
* Bitmap fonts aren't subject to ClearType subpixel anti-aliasing.
PxPlus: TrueType (TTF) fonts with a multi-lingual expanded character set
On top of the CP437 range, these support extended Latin, Greek, Cyrillic and Hebrew scripts plus a bunch of additional glyphs and Unicode symbols. The extra characters were taken from international versions of the original hardware (if available), or designed to closely follow the existing ones.
There are 782 characters in total (more than the Windows Glyph List v4 -- in fact the entire WGL4 range is there). A handful of the cp437 glyphs had to be remapped (here's why), but they're all still around.
Notes on the DOS-to-Unicode Character Map ('Px437' fonts)
The Px437 versions feature the Codepage 437 character set (DOS/OEM-US). Since any TrueType font can (and should) include a Unicode character map, these are still Unicode fonts with multi-platform support - they just don't include a whole lot of the Unicode range. Mapping CP437 to Unicode isn't that simple, due to characters 00h-1Fh and 7Fh: they can be interpreted either as control codes, or as graphical symbols. Thus there are two widely used mappings: the standard IBM/MS map (which does the former), and Unicode's "IBMGRAPH" map (which does the latter). Trouble is, software that expects one of them may not always play nice with the other one. As a solution, these fonts cover both bases in one mapping: the ambiguous characters are duplicated so that your program will find them at either placement. Windows detects the fonts as "OEM/DOS", and you can use them in any program or environment that understands this charset (including the Command Prompt). The same will be true on other platforms, as long as your software is properly configured -- RTFM, GIYF, etc.
Codepage 437 (column + row) mapped to Unicode values, all in hexadecimal.
* = these characters are also duplicated at the Control Code points (with values equal to the CP437 ones).
Notes on the Extended Unicode Character Map ('PxPlus' fonts)
The full 'PxPlus' charset (along with the supported Unicode ranges):
A few things that may (or may not) be useful to know:
- Alternate number forms: there's a flat-top '3' Ʒ mapped to U+01B7 'Latin capital letter Ezh', which is more easily distinguished from the Cyrillic letter Ze З. Also, two alternative zeroes (dotted and slashed) are mapped to U+2299 ⊙ 'circled dot operator' and U+2300 ⌀ 'diameter symbol'.
- Cursor shapes: Unicode character U+2581 ▁ 'lower one eighth block' can be used to mimic the classic text-mode cursor appearance. U+2584 ▄ 'lower half block' and U+2588 █ 'full block' could also stand in for those respective cursor forms.
- Remapped codepage 437 glyphs: The 'PxPlus' fonts still include all the original glyphs from the CP437 (DOS/OEM) versions. However, they also include a full Greek alphabet, which takes over the code points that Unicode assigns to the CP437 Greek/Math characters, and the new glyphs don't necessarily look the same.
Instead of just dropping the CP437 originals, I tried to retain them at remapped code points for the sake of completeness. Here's what's changed:
CP437 glyph Canonical Unicode value Modified 'PxPlus' mapping ═══════════ ════════════════════════════ ═══════════════════════════ ɑ (E0h) α (03B1/Greek small Alpha) ɑ (0251/Latin small Alpha) ϐ (E1h)* ß (00DF/Latin small Sharp S) ϐ (03D0/Greek Beta symbol) ᴦ (E2h) Γ (0393/Greek capital Gamma) ᴦ (1D26/Small capital Gamma) ᴨ (E3h) π (03C0/Greek small Pi) ᴨ (1D28/Small capital Pi) ∑ (E4h) Σ (03A3/Greek capital Sigma) ∑ (2211/N-ary Summation) ơ (E5h) σ (03C3/Greek small Sigma) ơ (01A1/Small o with horn) ᴛ (E7h) τ (03C4/Greek small Tau) ᴛ (1D1B/Small capital T) ɸ (E8h) Φ (03A6/Greek capital Phi) ɸ (0278/Latin small Phi) ϴ (E9h) Θ (0398/Greek capital Theta) ϴ (03F4/Capital Theta symbol) Ω (EAh) Ω (03A9/Greek capital Omega) Ω (2126/Ohm symbol) ẟ (EBh) δ (03B4/Greek small Delta) ẟ (1E9F/Latin small Delta) ∅ (EDh) φ (03C6 Greek small Phi) ∅ (2205/Empty set) ∈ (EEh) ε (03B5/Greek small Epsilon) ∈ (2208/Element of) * inconsistent: looks like a Beta in some fonts (β/03B2) and like a Sharp S in others (ß/00DF). Both of those have their own code points, so the new mapping simply preserves the original (whatever it looks like).
Misc. Usage Notes
Windows console / Command Prompt
Bitmap (raster) fonts can be freely selected for use in the Windows console. For TrueType fonts, Microsoft has somehow seen fit to require an unsupported registry hack. Since the extended Unicode charset ('PxPlus') fonts are TrueType-only, if you'd like to use them in console windows, you'll have to start regedit.exe and open this key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont You'll probably see two fonts defined (Lucida Console and Consolas), as "0" and "00" respectively. To enable more TrueType fonts, add a new String Value with one more 0 in its name (the first one you add will be 000, then 0000 and so on). In the Value field simply enter the font's name, e.g. PxPlus IBM VGA9. Hit OK and exit the editor. The font will now be available in the Properties dialog for console windows.
There are various font formats suitable for embedding in web pages, but providing such things would be a bit pointless, since most browsers these days support plain old TrueType as an embeddable format. I'd recommend simply using Font Squirrel's Webfont Generator, which can optimize the .TTF for web usage, create additional formats such as WOFF/EOT/SVG, and generate the appropriate stylesheet rules. There are lots of equivalent tools out there, but that's the one I used for this site.
Current operating systems usually have subpixel anti-aliasing enabled by default: ClearType on Windows, FreeType on Linux, Core Text on Mac OS X. This is less than ideal for TrueType pixel fonts, since it may introduce a sort of smearing/fringing effect in some cases. In practice I don't find it *that* noticeable, but it bothers you, you can get rid of it. On Windows, turn ClearType off or use the bitmap (.FON) version, which is not affected. On Linux, there are ways to disable anti-aliasing for specific fonts with FreeType. You'll have to see your docs/the web on how to pull that off though.
Credits & Acknowledgements
Fonts, documentation, website: VileR
- John Elliot, modem7, ripsaw8080, Great Hierophant, NewRisingSun
- for helpful information
- per, alecv, keropi, alexanrs, fs5500, John Elliot, Yossi Gil
- for providing sources and ROM dumps for several character sets, off real hardware and localized video cards
- Rebecca G. Bettencourt/Kreative Korp
- for responding to my inquiries with a surprise open-source release of the awesome Bits'n'Picas vectorizer
- ROM charset extraction:
- Crystal Tile 2 by angel-team
- Bitmap font editing:
- Fony 1.4.7 by hukka
- Bitmap-to-outline vectorization:
- Bits'n'Picas by Kreative Korp
- TrueType font editing, fine-tuning, re-encoding etc.:
- FontForge by George Williams and the FontForge Project
- Windows .TTF testing/viewing:
- SIL ViewGlyph v1.81.0 by Bob Hallissy/SIL International
- DOS screen font manipulation and dumping:
- fntcol16 by Yossi Gil
- DOS .CPI file manipulation:
- CPIED 1.3c by Balthasar Szczepański
- Web conversion:
- Webfont Generator by Font Squirrel
I can be reached at: email - viler/ΑΤ/int10h/DΟТ/org www - http://int10h.org blog - http://8088mph.blogspot.com * Spam and/or excessive dumbness will be ignored, deleted, spindled and mutilated *
I do not claim any rights to the original raster fonts on which this work is based. Credit for these goes to their respective designers. The font files in this pack (TTF and FON remakes and enhancements) are © 2016 VileR, and are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. "tl;dr" version (which is not a substitute for the license):
- You may freely share and adapt / transform / enhance them for any purpose
- You must give appropriate credit (which includes the author's name and a link to the original material)
- If you distribute your own adaptations, do so under a compatible license
- No warranties are given - whatever you do, I will not be held liable