Zint: Manual

6. Types of symbology

6.2 Stacked symbologies

6.2.1 Basic symbol Stacking

An early innovation to get more information into a symbol, used primarily in the vehicle industry, is to simply stack one-dimensional codes on top of each other. This can be achieved at the command prompt by giving more than one set of input data. For example

zint -d 'This' -d 'That'

will draw two Code 128 symbols, one on top of the other. The same result can be achieved using the API by executing the ZBarcode_Encode() function more than once on a symbol. For example:

my_symbol->symbology = BARCODE_CODE128;
error = ZBarcode_Encode(my_symbol, "This");  
error = ZBarcode_Encode(my_symbol, "That");  
error = ZBarcode_Print(my_symbol);

The stacked barcode rows can be separated by row separator bars by specifying --bind (output_options |=BARCODE_BIND). The height of the row separator bars in multiples of the X-dimension (minimum and default 1, maximum 4) can be set by --separator=(option_3):

zind --bind --separator=2 -d "This" -d "That"

A more sophisticated method is to use some type of line indexing which indicates to the barcode reader which order the symbols should be read. This is demonstrated by the symbologies below.

6.2.2 Codablock-F

Codablock-F
Example of Codablock-F

This is a stacked symbology based on Code 128 which can encode ASCII code set data up to a maximum length of 2725 characters. The width of the Codablock-F symbol can be set using the --cols= option at the command line or option_2. Alternatively the height (number of rows) can be set using the --rows= option at the command line or by setting option_1. Zint does not support encoding of GS1 data in Codablock-F symbols.

6.2.3 Code 16k (EN 12323)

Code 16K
Example of Code 16k

Code 16k uses a Code 128 based system which can stack up to 16 rows in a block. This gives a maximum data capacity of 77 characters or 154 numerical digits and includes two modulo-107 check digits. Code 16k also supports extended ASCII character encoding in the same manner as Code 128.

6.2.4 PDF417 (ISO 15438)

PDF417
Example of PDF417

Heavily used in the parcel industry, the PDF417 symbology can encode a vast amount of data into a small space. Zint supports encoding up to the ISO standard maximum symbol size of 925 codewords which (at error correction level 0) allows a maximum data size of 1850 text characters, or 2710 digits. The width of the generated PDF417 symbol can be specified at the command line using the --cols switch followed by a number between 1 and 30, and the amount of check digit information can be specified by using the --security switch followed by a number between 0 and 8 where the number of codewords used for check information is determined by 2(value + 1). If using the API these values are assigned to option_2 and option_1 respectively. The default level of check information is determined by the amount of data being encoded.This symbology uses Latin-1 character encoding by default but also supports the ECI encoding mechanism. A separate symbology ID can be used to encode Health Industry Barcode (HIBC) data which adds a leading '+' character and a modulo-49 check digit to the encoded data.

6.2.5 Compact PDF417

Also known as truncated PDF417. Options are the same as for PDF417 above.

Compact PDF417
Example of Compact PDF417

6.2.6 MicroPDF417 (ISO 24728)

Micro PDF417
Example of PDF417

A variation of the PDF417 standard, MicroPDF417 is intended for applications where symbol size needs to be kept to a minimum. 34 predefined symbol sizes are available with 1 - 4 columns and 4 - 44 rows. The maximum size MicroPDF417 symbol can hold 250 alphanumeric characters or 366 digits. The amount of error correction used is dependent on symbol size. The number of columns used can be determined using the --cols switch or option_2 as with PDF417. This symbology uses Latin-1 character encoding by default but also supports the ECI encoding mechanism. A separate symbology ID can be used to encode Health Industry Barcode (HIBC) data which adds a leading '+' character and a modulo-49 check digit to the encoded data.

6.2.7 GS1 DataBar-14 Stacked (ISO 24724)

GS1 DataBar-14 Stacked
Example of GS1 DataBar-14 Stacked

A stacked variation of the GS1 DataBar-14 symbol requiring the same input (see section 6.1.12.1). The height of this symbol is fixed. The data is encoded in two rows of bars with a central finder pattern. This symbol can be generated with a two-dimensional component to make a composi!importantte symbol.

6.2.8 GS1 DataBar-14 Stacked Omnidirectional (ISO 24724)

GS1 DataBar-14 Stacked Omnidirectional
Example of GS1 DataBar-14 Stacked Omnidirectional

Another variation of the GS1 DataBar-14 symbol requiring the same input (see section 6.1.12.1). The data is encoded in two rows of bars with a central finder pattern. This symbol can be generated with a two-dimensional component to make a composite symbol.

6.2.9 GS1 DataBar Expanded Stacked (ISO 24724)

GS1 DataBar Expanded Stacked
Example of GS1 DataBar Expanded Stacked

A stacked variation of the GS1 DataBar Expanded symbol for smaller packages. Input is the same as for GS1 DataBar Expanded (see section 6.1.12.3). In addition the width of the symbol can be altered using the --cols switch or option_2. In this case the number of columns relates to the number of character pairs on each row of the symbol. This symbol can be generated with a two- dimensional component to make a composite symbol. For symbols with a 2D component the number of columns must be at least 2.

6.2.10 Code 49

Code 49
Example of Code 49

Developed in 1987 at Intermec, Code 49 is a cross between UPC and Code 39. It it one of the earliest stacked symbologies and influenced the design of Code 16K a few years later. It supports full 7-bit ASCII input up to a maximum of 49 characters or 81 numeric digits. GS1 data encoding is also supported.