Keypunch029 — for all your punched card font needs …

A fairly accurate rendition of the 5×7 dot matrix font printed at the
top of punched cards by the IBM Type 29 Card Punch (1965).

Local copy:
Fontlibrary link: Keypunch029 (may not be live yet; forget some obscure licensing text in the metadata of one variants, and FontLibrary sent it to moderation).

The 029 (as it is sometimes known) generated a bitmap font from an engraved metal plate pressing on a matrix of pins. A picture of this plate from a field engineering manual was used to re-create the pin matrices, and thus an outline font.

029 Code Plate
029 Code Key

Historical Accuracy

The 029 could have many different code plates, but the one used here contained the characters:


The character glyphs have been sized such that if printed at 12 points, the 029’s character pitch of 0.087″ is accurately reproduced. No attempt to research the pin matrix pitch or pin diameter has been made: the spacing was eyeballed from a couple of punched cards in my collection.

The earlier IBM Type 26 Card Punch (“026”) included a glyph for a square lozenge (Unicode U+2311, ⌑). The 029 code plate did not include this character, but I added it here for completeness.

The character set was extended to include:

  • all of ASCII, with lower case characters repeating the upper case glyphs;
  • sterling currency symbol; and
  • euro currency symbol.

While there may have been official IBM renditions of some of these additional glyphs (with the exception of euro) no attempt has been made to research the original shapes. This font set is intended to help with the visually accurate reproduction of 1960s-era punched cards, mostly coinciding with my interest in the FORTRAN programming language. No attempt has been made to use historical BCD/EBCDIC encodings in these fonts. We have Unicode now.

The 029 card punch could not produce any bold or italic font variants, but FontForge can, so I did.

Things I learned in making these fonts

  1. The 029 card punch printer could be damaged if you tried to print binary cards, as there was no way to disengage the code plate from the punch mechanism.
  2. FontForge really hates to have paths in a glyph just touching. Either keep them more than one unit apart, or overlap them and merge the overlapping paths.
  3. EBCDIC is weird.


PoorFish, v2

On FontLibrary: PoorFish

Local copy:

Full Language Support: Afrikaans, Baltic, Basic Latin, Catalan, Central European, Dutch, Esperanto, Euro, Turkish, Western European. Terrible kerning comes free.

(original version from 2010: PoorFish)

Library Hand – Disjoint

LibHandDis — Based on scans of “Library Hand – Disjoint”, described in Dana’s A Library Primer, with some modifications.

Major changes from scan:

  • As the scan only covered A-Z, a-z, 0-9 and ‘&’, I had to make the rest up.
  • Many of the descenders had to be shortened to fit with modern typography conventions.
  • Kerning is much tighter than Dana’s guidelines suggest.

(idea for this came via MetaFilter, This question of library handwriting is an exceedingly practical one)

Local copy:

a font for the person you’re just dotty about

LoveMatrix is a lo-fi dot matrix font made of ♥♥♥s. It’s a seasonally-adjusted version of my mnicmp font.

Local copy:

mnicmp: the DECwriter lives again!

I just made and uploaded this to FontLibrary: mnicmp.

This is meant more as an exercise in learning FontForge‘s programming back-end, and definitely showed me that FontForge is incredibly powerful. After the learning comes silliness, so I ended up turning the dots into something like:

I learned you really have to consider a dot-matrix font to be an array of points rather than a glyph, because otherwise you get the dots coming out the wrong sort of oval:

Blue font has been italicized as a whole, while the black dots were done properly

You don’t want to know what it did to the stars …

Local archive:

BlockTwo, a dreadful font


BlockTwo is a spectacularly ugly font mostly for playing about with 3D intersections in OpenSCAD. Not recommended for any but the most extreme display usage. Coverage is only A-Z caps, 0-9, heart and block.

Font Library link: BlockTwo
Local copy:


sampleYup, another highly impractical monospaced font. This one is based on a short-lived 22 segment display made in the early 1980s by Litronix (datasheet).

It’s also on Fontlibrary: ThreeFourTwoTwo.

Local download: ThreeFourTwoTwo .

If you use this font red on a dark background and under-print the ¤ character in a faint colour, you get an approximation of the LED segment mask:


TwentyfourSixteen – a 17-segment alpha LCD font



Made in 2016 by Stewart C. Russell –

A mono-spaced font family derived from the HP/Siemens/Litronix DL-2416 17-segment alphanumeric 17 segment LED display matrix.

Design size: appx 19 pt

For maximum fidelity, should be displayed/printed red to match the original’s ~640 nm wavelength. This corresponds to RGB #ff2100


Regular only.

Note that this has a very slight skew (5°) built in.


ASCII only, upper case.


Stewart C. Russell –


Dual-licensed CC0/WTFPL (srsly)

All of the segments. I've stashed this glyph at character code U+007f so you can make up new ones.
All of the segments. I’ve stashed this glyph at character code U+007f so you can make up new ones.

also: — just 00-99 as PNG images, after this, made with Pango, like this:

for f in {00..99}
 pango-view --no-display --background=black --dpi=112 --align=right --foreground='#ff2100' --font='TwentyfourSixteen Regular 48' --hinting=full --output="$f.png" -t "$f"

FifteenTwenty: now on Fontlibrary and github


Use it / download it here: FifteenTwenty on
Download it / fork it here: scruss/FifteenTwenty on github
Local copy: (268K; includes FontForge sources)

FifteenTwenty UltraLight: single-stroke OTF for CNC/plotting

Screenshot from 2016-05-08 17-18-31Following on from FifteenTwenty, I made a hairline/single stroke version of the font especially for CNC use. This is a slight misuse of the OpenType format, but if you’re plotting/CNCing/laser cutting, the filled paths of standard fonts don’t work so well. Single-line (or stroke) fonts used to be possible in PostScript — the version of Courier shipped with early Apple LaserWriter printers was composed of strokes, rather than filled paths — but have fallen out of favour. If you have a device with a defined tool width, it’s better to let the tool make the width of the mark/cut. Here’s the hairline font plotted with a 0.7 mm pen to illustrate what I mean:

1520hairlineThis font is almost invisible on screen or on a regular printer, so I don’t recommend installing it unless you have specific CNC/plotting needs. Please note that the font will cause your device to follow the tool path of each letter twice.

Download: (or more options …)

Precisely what nobody wanted — the Hershey fonts as a huge great PDF


It’s impractically huge, but under the image link lives a table of all of the Hershey fonts (well, the Western ones, at least). It’s interesting to note Dr Hershey’s preferences in this pre-ASCII table: almost every variant has degree, minute and second symbols, but none of them have ‘\’. Many of them don’t have ‘@’, either, so no e-mail addresses in Hershey Fraktur for you …

Forgive me, A V Hershey …

Forgive me, A V Hershey …

I’ve been playing with the Hershey Fonts, vector data digitised by the US government in 1967. It’s in a bit of a bear of a format.

I hope to do more fun stuff with the data. For now, here’s an 120 page sample book showing all the characters:


Times New ROT13 (and Times New Caesar)

If you’re wondering why the lower line has a load of squigglies when it appears identical to the one above, open the linked PDF and copy some of the text. Looks a bit squiffy, no?

I’m messing with your head here by splitting the encoding of the characters from the appearance of the glyphs, and using the old rot13 cypher to do it. This will really mess up the new MS Office “Edit PDF as text” schtick. Please note I’m doing this for lulz, not to break accessibility; that would be as the kids today say, a dick move.

Here’s the font: TimesNewROT13.

Since Times is both New and Roman, I thought I’d add some old roman by making a Caesar Cypher version. I don’t think I’ve done this quite right, but it works if you use the following shell command as an encoder:

tr '[A-C][D-Z][a-c][d-z]' '[D-Z][A-C][d-z][a-c]'

Here it is: TimesNewCaesar. I’ll fix it soon enough.

(Note that ROT13 fonts have been done before …)

Yours truly, ‰te>a…t

I like epost. I’d like it even more if they hurried up and processed my direct payment ability — which required a form and a void cheque mailed to an address in Toronto — but it’s a pretty good service. I get my bills, viewable and payable online, on the day of issue. No paper. This is good.

This is good because every single filing container I buy eventually ends up full of (paid) bills and financial administrivia. Less paper = less messy Stewart = happy Stewart. Some messes, like my electronics table, could be classed as glorious, however, and therefore joyous in their creation and use. Not all tidiness is good.

So I got my first Visa bill by e-post. Yay! Reviewed it, paid it. No hassle. But since this a PDF facsimile of my bill, something mighty odd has happened to my address:

It’s a perfect substitution cypher of my name and address. I’ve been out of the prepress industry for long enough not to immediately recognize it as a font encoding error. I’m confused why it might have A, T, E & N, but no M. Odd indeed.

(Not Just) Firefox’s “Pile of Poo” Easter Egg: 💩

For a reason best known to the Unicode consortium, there is now the symbol U+1F4A9 “Pile of Poo”: 💩. If you happen to create a web page with this delightful character in the title, Firefox does something special:

Yep, that’s a smiley face poo, a bit like Mr Hankey. Oh dear.

Actually, it seems it might be an OS X Emoji thing, because Safari renders it in the title like that, and in the text as (enlarged to show texture):

iOS has it covered too:

Blackberry’s browser just shows a small black square. Android, rather sensibly, shows an empty square. It must be an Apple thing.

“Thanks” go to tchrist‘s comment in unicode – Why does modern Perl avoid UTF-8 by default? for alerting me to this character, and letting us know about the Symbola font that supports it. Yeah, cheers Tom …

ecofont: somebody drilled out a font

Ecofont claims to help you save ink (and not mass, like drilled out bike bits). The approach is the same:

Both of my printers have ink-saving settings that avoid this horror. Plus, y’know, with print to PDF, who wants paper?

MeltdownHorrid – an unsettled, stereotyped font

I took the glyphs of an overused generic font, and subjected them repeatedly to the modern equivalent of stereotyping: rasterized them, then autotraced the bitmaps. As a side effect, all the character heights were lost, so everything’s the same size.


PoorFish: an apology font

Truetype font:

This is the first one I’ve done that hasn’t needed a printer or scanner. I exported the template to a single image (chargrid.png), then hand-wrote the characters using my graphics tablet on a new transparent layer in Gimp.