Barcode Xpress for Linux v13.4 - Updated
Code 39
User Guide > Concepts > Barcode Specifications > Barcode Types > Code 39

Code 39 is widely used in many industries across the world. It is the standard for many government barcode specifications, including the U.S. Department of Defense. Code 39 is also known as Code 3 of 9.

Code 39 was the first alphanumeric symbology. Its character set includes the digits 0-9, the letters A-Z (uppercase only), and the following symbols: space, minus "-", plus "+", period ".", dollar sign "$", slash "/", and percent "%". Barcode Xpress for Linux generates an error if you have characters in your barcode value that are not allowed.

Each data character is made up of 5 bars and 4 spaces for a total of 9 elements. Each character includes 3 wide and 6 narrow elements. Thus, 3 out of the 9 elements are always wide, which is the reason why the code is sometimes called "3 of 9".

The ratio of wide to narrow bar width can be in the range of 1.8 to 3.4. The barcode engine Code 39 uses a 2:1 wide to narrow bar width ratio.

Code 39 requires a quiet zone, which should be at least the width of 10 narrow bars. This means that if you set the MinimumBarWidth property to 3 pixels (narrow bar size), you should set the HorizontalWhiteSpace property to 30 pixels. Since Code 39 is a self-checking barcode, it normally does not require a checksum. However, when necessary, an optional modulo 43 checksum may be used.

By default, Barcode Xpress for Linux does not write optional checksums. If a checksum is desired for Code 39, set the EnableCheckSum property to 1(TRUE) and the barcode engine calculates and writes the checksum.

If you don't set the reader BarcodeTypes property to specifically look for Code 32 barcodes, the barcode engine might confuse a Code 32 barcode with a Code 39 barcode since Code 32 is a subset of Code 39 and Barcode Xpress assumes the barcode is a Code 39 when looking for Code 39 or both.
By default, Barcode Xpress detects Code 39 barcodes only with start and stop patterns. Use the Code39StartStopPatternsAreMandatory property to search for Code 39 barcodes without start and stop patterns.

An example: