Tag: otf

  • New font: nic7pin

    A rendering of a 7-pin dot matrix font, as used by the Epson MX-70 reduced-cost printer from the mid-1980s.

    Fixed width dot matrix font sample
    note the complete lack of descenders

    (github mirror: scruss/nic7pin: a 7-pin dot matrix font, as used by the Epson MX-70)

    Name

    Seiko Epson Corporation is named as “son of EP-101”, for the world’s first compact, lightweight digital printer. I’m Scottish, and in Scots Gaelic “son of” is mac. Unfortunately, that prefix has been co-opted by an overpriced computer vendor. In Gaelic, nic means “daughter of”, so as an oblique compliment to Epson, this font is named daughter of 7 pin. It seemed like a good idea at the time …

    Coverage

    ASCII.

    Design Size

    The 12 point design size is meant to reproduce 12 characters per inch horizontally, and six lines per inch vertically.

    Source

    While this font is produced entirely by one Python FontForge script, the code is too ugly for you to look at. The included mx70.json is likely more useful: it contains all of the pin definitions keyed by character name.

    Licence

    © 2026 – Stewart Russell, scruss.com with Reserved Font Name nic7pin

    This Font Software is licensed under the SIL Open Font Licence, Version 1.1. https://openfontlicense.org/

    [I do not agree with SIL’s missionary work in any way, and the use of this licence isn’t an endorsement of SIL.]

    References

  • New font: A73

    Based on E73 from a couple of days ago, this is extended for full ASCII coverage:

    Fixed width dot matrix font sample

    Design Size

    The 12 point design size is meant to reproduce 10 characters per inch horizontally, and six lines per inch vertically.

    Variants

    The ECMA 42 standard states (§ 4.2):

    The dots … are circles of 0.4 mm diameter nominal or polygons of equivalent area.

    So I went slightly overboard on the dot shapes:

       A73      Circles
       A73D     Diamonds
       A73L     Lozenges
       A73P     Pentagons
       A73S     Squares
       A73T     Triangles
       A73St    Stars
       A73H     Hearts(!)
    
    font sample of a dot-matrix font where each character is made up of dots that are circles, diamonds, lozenges, pentagons, squares, triangles, stars or hearts

    Source

    While this font is produced entirely by one Python FontForge script, the code is too ugly to include here. The included a73.json is likely more useful: it contains all of the pin definitions keyed by character name.

    Licence

    © 2026 – Stewart Russell, scruss.com with Reserved Font Names A73, A73D, A73L, A73P, A73S, A73T, A73St and A73H.

    This Font Software is licensed under the SIL Open Font Licence, Version 1.1.
    https://openfontlicense.org/

    [I do not agree with SIL’s missionary work in any way, and the use of this licence is in no way an endorsement of SIL.]

    Reference

  • New font: E73

    Hey! If you want a variant with full ASCII coverage, go here: A73.

    A rendering of the ECMA-42 standard bitmap printer font from 1973.

    Fixed width dot matrix font sample
    No descenders, and no two adjacent dots are filled, like all old 7-pin printers

    Also on github: scruss/E73: ECMA-42 standard printer font from 1973.

    Name

    E from ECMA, and 1973 for its publication year.

    Coverage

    ASCII, mostly. The standard did not provide definitions for these characters:

    • U+005F _ LOW LINE
    • U+0060 ` GRAVE ACCENT
    • U+007B { LEFT CURLY BRACKET
    • U+007D } RIGHT CURLY BRACKET
    • U+007E ~ TILDE

    As this is an attempt to faithfully implement a standard, these characters were not synthesized. In a slight concession to modernity, glyphs for A–Z have been copied to a–z.

    The standard also defines the following extended characters:

    • U+00A4 ¤ CURRENCY SIGN
    • U+00A3 £ POUND SIGN
    • U+00C6 Æ LATIN CAPITAL LETTER AE
    • U+00C5 Å LATIN CAPITAL LETTER A WITH RING ABOVE
    • U+00C4 Ä LATIN CAPITAL LETTER A WITH DIAERESIS
    • U+00A7 § SECTION SIGN
    • U+0132 IJ LATIN CAPITAL LIGATURE IJ
    • U+00D6 Ö LATIN CAPITAL LETTER O WITH DIAERESIS
    • U+00D8 Ø LATIN CAPITAL LETTER O WITH STROKE
    • U+00DC Ü LATIN CAPITAL LETTER U WITH DIAERESIS

    Design Size

    The 12 point design size is meant to reproduce 10 characters per inch horizontally, and six lines per inch vertically. This is a requirement of the standard to match OCR fonts of the day.

    Variants

    None. This is an attempt to reproduce the character forms exactly according to the standard document.

    Source

    While this font is produced entirely by one Python FontForge script, the code is too ugly to include here. The included ecma42.json is likely more useful: it contains all of the pin definitions keyed by character name.

    Licence

    © 2026 – Stewart Russell, scruss.com with Reserved Font Name E73

    This Font Software is licensed under the SIL Open Font Licence, Version 1.1.
    https://openfontlicense.org/

    [I do not agree with SIL’s missionary work in any way, and the use of this licence is in no way an endorsement of SIL.]

    Reference

  • FifteenTwenty: Commodore 1520 plotter font

    FifteenTwenty

    For the impatient: download FifteenTwenty-master.zip FifteenTwenty-Regular-OTF.zip (or more options …)
    Updated: now with all ASCII glyphs!

    Update, September 2016: this font was officially squee‘d over by Josh “cortex” Millard on the Metafilter Podcast #120: Hard Out There For A Nerd. I had the great pleasure of meeting Josh at XOXO 2016, too.

    The Commodore 1520 was a tiny pen plotter sold for the Commodore 64 home computer. It looked like this:

    Commodore 1520 printer plotter (adjusted).jpg
    Commodore 1520 printer plotter — by Oguenther (Dr.Guenther). – This file was derived from Cbm1520-2.jpg: , Public Domain, https://commons.wikimedia.org/w/index.php?curid=39145769

    I never owned one, but it seems it was more of a curiosity than a useful product.

    From a nerdy point of view, however, this device was rather clever in that it packed a whole plotter command language, including a usable font, into 2048 bytes of ROM. Nothing is that small any more.

    Thanks to the epic efforts of Jim Brain and others, this ROM is now archived on Project 64 Reloaded. Looking at the code, I was struck by the elegance of the encoding: it packs a full X-Y plot instruction in one byte.

    Based on my work with the Hershey font collection, I thought it would be fun to extract the coordinates and make a real OpenType font from these data. I’m sure others would sense the urgency in this task, too.

    Since Commodore computers used a subset of ASCII, there’s a barely-usable set of characters in this first release. Notable missing characters include:

    U+005C    \    REVERSE SOLIDUS
    U+005E    ^    CIRCUMFLEX ACCENT
    U+0060    `    GRAVE ACCENT
    U+007B    {    LEFT CURLY BRACKET
    U+007C    |    VERTICAL LINE
    U+007D    }    RIGHT CURLY BRACKET
    U+007E    ~    TILDE

    I’ll get to those later, perhaps.

    Huge thanks to all who helped get the data, and make the bits of software I used to make this outline font.

    (Note: although the Project 64 Reloaded contains some extraction code to nominally produce an SVG font, it doesn’t work properly — and SVG fonts are pretty much dead anyway. I didn’t base any of my work on their Ruby code.)

  • Hershey Writes Again

    Update: very preliminary OTF font files are available here: scruss/AVHershey-OTF. These don’t yet even encode all of ASCII, so aren’t yet generally useful.

    Major breakthrough: yesterday (Feb 5th), I got the old Hershey fonts outlined properly, and today I have compiled them (sorta) into vector fonts. They’re not yet ready for release, as they have no metadata and are missing some key characters (even for ASCII).

    I based the line thicknesses for the fonts as if I were drawing a 16 pt character, and using a plotter with a 0.3 mm (light), 0.7 mm (medium) and 1.0 mm (heavy) pen. You can see in the individual characters from the Hershey Complex font shown below, that the double hairline strokes merge into thicker single strokes. The same effect occurs on a real plotter, too:

    S_AVHersheyComplexLightS_AVHersheyComplexMediumS_AVHersheyComplexHeavy

    Here are some preliminary bitmap samples:

    Complex Heavy
    Complex Heavy

    Complex Light
    Complex Light

    Complex Medium
    Complex Medium

    Simplex Heavy
    Simplex Heavy

    Simplex Light
    Simplex Light

    Simplex Medium
    Simplex Medium