OCR-A is a font that arose in the early days of computer optical character recognition when there was a need for a font that could be recognized not only by the computers of that day, but also by humans. OCR-A uses simple, thick strokes to form recognizable characters. The font is monospaced (fixed-width), with the printer required to place glyphs 0.254 cm (0.10 inch) apart, and the reader required to accept any spacing between 0.2286 cm (0.09 inch) and 0.4572 cm (0.18 inch).
To make the free version of the font more accessible to users of Microsoft Windows, John Sauter converted the Metafont definitions to TrueType using potrace and FontForge in 2004. In 2007, Gürkan Sengün created a Debian package from this implementation. In 2008. Luc Devroye corrected the vertical positioning in John Sauter's implementation, and fixed the name of lower case z.
Independently, Matthew Skala used mftrace to convert the Metafont definitions to TrueType format in 2006. In 2011 he released a new version created by rewriting the Metafont definitions to work with METATYPE1, generating outlines directly without an intermediate tracing step. On September 27, 2012, he updated his implementation to version 0.2.
In addition to these free implementations of OCR-A, there are also implementations sold by several vendors.
Although optical character recognition technology has advanced to the point where such simple fonts are no longer necessary, the OCR-A font has remained in use. Its usage remains widespread in the encoding of cheques around the world. Some lock box companies still insist that the account number and amount owed on a bill return form be printed in OCR-A. Also, because of its unusual look, it is sometimes used in advertising and display graphics.
A font is a set of character shapes, or glyphs. For a computer to use a font, each glyph must be assigned a code point in a character set. When OCR-A was being standardized the usual character coding was the American Standard Code for Information Interchange or ASCII. Not all of the glyphs of OCR-A fit into ASCII, and for five of the characters there were alternate glyphs, which might have suggested the need for a second font. However, for convenience and efficiency all of the glyphs were expected to be accessible in a single font using ASCII coding, with the additional characters placed at coding points that would otherwise have been unused.
Main article: Optical Character Recognition (Unicode block)
The following characters have been defined for control purposes and are now in the "Optical Character Recognition" Unicode range 2440–245F:
|OCR Inverted fork||⑃||⑃||U+2443|
|OCR Belt buckle||⑄||⑄||U+2444|
|OCR Bow tie||⑅||⑅||U+2445|
All implementations of OCR-A use U+0020 for space, U+0030 through U+0039 for the decimal digits, U+0041 through U+005A for the unaccented upper case letters, and U+0061 through U+007A for the unaccented lower case letters.
In addition to the digits and unaccented letters, many of the characters of OCR-A have obvious code points in ASCII. Of those that do not, most, including all of OCR-A's accented letters, have obvious code points in Unicode.
|Full Stop (Period)||U+002E|
|Left Square Bracket||U+005B|
|Reverse Solidus (Backslash)||U+005C|
|Right Square Bracket||U+005D|
|Left Curly Bracket||U+007B|
|Right Curly Bracket||U+007D|
|Pound Sign (Sterling)||U+00A3|
|Latin Capital Letter A with Dieresis||U+00C4|
|Latin Capital Letter A with Ring Above||U+00C5|
|Latin Capital Letter AE||U+00C6|
|Latin Capital Letter N with Tilde||U+00D1|
|Latin Capital Letter O with Dieresis||U+00D6|
|Latin Capital Letter O with Stroke||U+00D8|
|Latin Capital Letter U with Dieresis||U+00DC|
Linotype coded the remaining characters of OCR-A as follows:
|Long Vertical Mark||U+007C||Vertical Line|
|Alternate Comma||U+E000||private use 0|
|Character Erase||U+E001||private use 1|
|Alternate Hyphen||U+E003||private use 3|
|Alternate Period||U+E004||private use 4|
|Alternate Question Mark||U+E005||private use 5|
|Alternate Apostrophe||U+E006||private use 6|
The fonts that descend from the work of Tor Lillqvist and Richard B. Wales define four characters not in OCR-A to fill out the ASCII character set. These shapes use the same style as the OCR-A character shapes. They are:
Linotype also defines additional characters.
Some implementations do not use the above code point assignments for some characters.
The PrecisionID implementation of OCR-A has the following non-standard code points:
The Morovia implementation of OCR-A has the following non-standard code points:
The IDAutomation implementation of OCR-A has the following non-standard code points:
|Wikimedia Commons has media related to OCR-A.|