Telepen is a name of a barcode symbology designed in 1972 in the UK to express all 128 ASCII characters without using shift characters for code switching, and using only two different widths for bars and spaces. (Unlike Code 128, which uses shifts and four different element widths.)
Unlike most linear barcodes, Telepen does not define independent encodings for each character, but instead operates on a stream of bits. It is able to represent any bit stream containing an even number of 0 bits, and is applied to ASCII bytes with even parity, which satisfy that rule. Bytes are encoded in little-endian bit order.
The string of bits is divided into 1 bits, and blocks of the form 01*0. That is, blocks beginning an ending with a 0 bit, with any number of 1 bits in between.
These are then encoded as follows:
- "1" is encoded as narrow bar-narrow space
- "00" is encoded as wide bar-narrow space
- "010" is encoded as wide bar-wide space
- Otherwise, the leading "01" and trailing "10" are both encoded as narrow bar-wide space, with additional 1 bits in between coded as described above.
Wide elements are 3 times the width of narrow elements, so every bit occupies 2 narrow elements of space.
Bar codes always start with ASCII _ (underscore). This has code 0x5F, so the (lsbit-first) bit stream is 11111010. Thus, it is represented as 5 narrow bar/narrow space pairs, followed by a wide bar/wide space.
Bar codes always end with ASCII z. This has (including parity) code 0xFA, so the (lsbit-first) bit stream is 01011111. This is encoded as a wide bar/wide space, followed by 5 narrow bar/narrow space pairs. Each end of the bar code consists of repeated narrow elements terminated by a pair of wide elements, but the start has a wide bar first, while if the code is read in reverse, the wide space will be encountered first.
In addition to per-character parity bits, a telepen symbol also includes an overall modulo-127 checksum.
- "Telepen Barcode Symbology". Telepen (telepen.co.uk). Retrieved 27 January 2013.