Game Font Forensics
int10h.org
int10h.org
It was posted to HN twice with 0 comments so I figured I'd mention it here.
Then someone found it in another game, turns out it was just a stock texture.
Inspired by IBM PC games from the 1990s, I aspired to create my own invaders-like game. However I had limited access to computers back then (≤ 70 mins/month). My knowledge of computer programming was very limited too. At that time, I could only manage to write a few simple text-based adventure games. Although 25 years too late, during the COVID-19 pandemic, I revisited that dream and spent a weekend writing my own Invaders game[2] using HTML5 Canvas.
Initially, I used CanvasRenderingContext2D.fillText() to display text (current score, info screen, etc.). However, dissatisfied with the text rendering quality, I began looking for IBM PC OEM fonts online and came across the Oldschool PC Fonts[3] on int10h.org. After downloading the font packs from the website, I wrote a little Python script to convert them to bitmaps[4] (arrays of integers), and then used the bitmaps to draw text on the canvas using JavaScript, one cell at a time, to get pixel-perfect results!
I eventually switched to a different font pack called Modern DOS[5] developed by Jayvee Enaguas. Nevertheless, given how extensive VileR's website is and how convenient the font preview tools[6] on the website are, int10h.org remains as my go-to website whenever I am doing any type of retrocomputing experiments for fun.
[2] https://susam.net/invaders.html
[3] https://int10h.org/oldschool-pc-fonts/
[4] https://github.com/susam/pcface
[5] https://www.dafont.com/modern-dos.font
[6] https://int10h.org/oldschool-pc-fonts/fontlist/font?ibm_vga_...
Do the Modern DOS fonts have a particular advantage for you, in terms of implementation? If they do, let me know and I'll consider those improvements as well!
According to my examination of the Modern DOS font, it seems to be based on the IBM VGA 8x16 and Verite 8x16 OEM fonts[1][2]. Some glyphs in it look exactly like those of IBM VGA 8x16 while some others look exactly like those of Verite 8x16. But it also has some glyphs that match neither of the two OEM fonts. Instead they appear to be adaptations of the glyphs found in one or both of the OEM fonts.
To summarise, Modern DOS does not appear to be a faithful reproduction of any OEM font. Despite considerable deviations from the OEM fonts, I quite liked it due to some choices made in the font. For example, it has the slashed zero of Verite and it also has the raised stem for the digit 2 and the curved stem for the digit 7 from IBM VGA 8x16. I personally happened to like this type of amalgamation. However it is not suitable for anyone who cares about accuracy and fidelity to specific OEM fonts.
For anyone interested in obtaining reproductions of the OEM fonts that are as faithful as possible[3], in my opinion, they should go to your page at https://int10h.org/oldschool-pc-fonts/ without a doubt! Thanks for creating and maintaining this wonderful resource!
[1] https://int10h.org/oldschool-pc-fonts/fontlist/font?ibm_vga_...
[2] https://int10h.org/oldschool-pc-fonts/fontlist/font?verite_8...
[3] https://int10h.org/oldschool-pc-fonts/readme/ (see "Is every single font here 100% faithful to the original raster typeface?")
I also believe the font used in the VMware VBIOS is derived from that, so those who run a lot of text-mode stuff in VMware may take a liking to it.
I suppose I should start collecting examples of this font as I spot them, for comparison.
I think I remember seeing a similar post about Chinese bootleg games for non-PC systems. The commonality was comparing pixel data to trace what the bootlegs had taken parts from. That raises a question: can we automate inferring the copying and modification of parts between older games?
In biology, there's a similar technique. Phylogenetic analysis compares sequences to reconstruct evolutionary relationships between samples. From what I understand, it seems possible to do something similar for the pixel data of game assets.
However, there are limits: you have to stay above a certain pixel size for results to have meaning. The lower your resolution, the more each pixel font looks the same. The same seems to be true for sprites representing in-game elements.
In a game I'm reversing right now there's an arial8.tga which struck me as feeling completely timeless, or out-of-time. The game is from the year 2000, but this exact file could have appeared in any game over like a 40 year timespan.