Telepen



Telepen is a name of the barcode symbology designed to encode all 128 ASCII characters without using shift characters for code switching, and only using two different widths for both bars and spaces. (Unlike Code 128, which uses shifts and four different element widths ). The symbology was devised by George Sims of SB Electronic Systems Ltd. Telepen was originally designed in the UK in 1972.

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 satisfies that rule. Bytes are encoded in little-endian bit order.

The string of bits is divided into single 1 bits and blocks of the form 01*0. That is, blocks beginning and ending with a 0 bit, with any number of 1 bits in between.

These are then encoded as follows:
 * "1" is encoded as a narrow bar-narrow space
 * "00" is encoded as a 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 bit 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.

Barcodes always start with ASCII _ (underscore). This has a code of 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.

Barcodes always end with ASCII z. This has (including parity) a code of 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 the end terminates with a wide space.

In addition to per-character parity bits, a Telepen symbol includes an overall modulo-127 checksum.