A rendering of a 9-pin dot matrix font intended for OCR use, specified in FIPS PUB 129 / ANSI X3.111-1986 “Optical Character Recognition (OCR) — Matrix Character Sets for OCR-MA”

(github mirror: scruss/OCRmA: 9-pin dot matrix font based on FIPS PUB 129 / ANSI X3.111-1986)
Coverage
Extremely limited character set:
1 2 3 4 5 6 7 8 9 0
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
⑀ ⑁ ⑂ + - . / $ < > " , ¥
Lower case character glyphs are duplicates of upper case ones, although this is outside the X3.111-1986 standard.
Design Size
The 12 point design size is meant to reproduce 12 characters per inch horizontally, and six lines per inch vertically. OCR standards of 1986 suggested three lines per vertical inch, which can be achieved by double spacing.
Source
While this font is produced entirely by one Python FontForge script, the code is too ugly for you to look at. The included OCRmA.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 OCRmA
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
- Optical Character Recognition (OCR) — Matrix Character Sets for OCR-MA – FIPS PUB 129 / ANSI X3.111-1986.







