Chapter 2. Overview

This chapter briefly reviews the symbologies (a.k.a. barcode formats) supported by QR Code Fonts & Encoder 5. QRCode Fonts & Encoder 5 supports normal QR Code, Micro QR Code and HIBC QR Code (which is based on normal QRcode).

2.1. What is QR Code?

QR CodeMicro QR Code

QR Code is capable of handling all types of data, such as numeric and alphabetic characters, Kanji, binary bytes and control codes. Up to 7,089 digits can be encoded in one symbol.

QR Code has undergone two major revisions - Model 1 and Model 2. It is generally believed that the two models are not compatible with each other. The ISO/IEC 18004:2006 defines Model 2, often referred as QR Code 2005.

This software produces QR Code symbols compliant with Model 2 only.

QR Code supports several advanced features not present in many other barcode formats, such as Extended Channel Interpretation (ECI), FNC1 and Structural Append (SA). The advanced features require special input format. For more information, see Section 2.2.4, “Structural Append (SA)”.

HIBC QRCode is a variant of QR Code. It uses QR Code to encode HIBC LIC. When this option is specified, our program automatically adds + sign at the beginning and appends a checksum digit at the end, then encodes them as a whole.

The Micro QR Code format (also specified in this International Standard), is a variant of QR Code 2005 with a reduced number of overhead modules and a restricted range of sizes, which enables small to moderate amounts of data to be represented in a small symbol, particularly suited to direct marking on parts and components, and to applications where the space available for the symbol is severely restricted. Micro QR is capable of encoding up to 35 digits, 21 alphanumeric characters, 15 bytes or 9 kanji characters.

2.1.1. Encoding Character Set

QR Code is capable of encoding four types of data, as listed below. Note that the interpretation of byte characters is subject to the ECI, which is assumed to be ISO8859-1 if no ECI is defined in the symbol.

  • Numeric characters: 0-9.

  • Alphanumeric characters: digits 0-9, all upper case letters (A-z) and 9 punctuation symbols (space, $, %, *, +, -, ., : and /).

  • Byte characters: single byte (ASCII value 0-255).

  • Kanji characters. A Kanji character consists of two bytes and has a value either between 0x8140 and 0x9ffc, or between 0xe040 and 0xebbf. In the software, they must be enclosed in a special format block called Kanji block. Read further for more information on Kanji block.

QR Code defines several encoding modes, with the numeric set the most efficient and the Kanji set the least. Internally, the encoder switches the modes automatically based on the nature of the data, with the goal of minimizing the symbol size required. The algorithm produces the optimal results in most cases.

When space is a concern, it is desirable to adjust the character set of data encoded so that they can be more efficiently encoded. For example, the alphanumeric character set in QR Code does not include lower case letters. If the string encoded is case insensitive, it reduces space requirement by converting all letters upper case.

QR Code also defines several advanced features that can only be encoded with escaped format, referred as tilde codes throughout the manual. These advanced features include:

  • ECI. ECI was proposed by AIM to give a unified interpretation to the byte data encoded in a barcode symbol, thus allowing different character set of data to be mixed in a symbol.

  • Structural Append. Structural Append allows data to be split into multiple symbols. Beside to the data, those symbols encode additional information such as sequence number, total number of symbols, and parity value. A capable reader is able to read them randomly and put the data together.

  • FNC1. GS1 uses this special character to indicate that a GS1-compatible data encoded in the symbol.

2.1.2. Options

Three options affect the final shape of the symbol generated:

Symbol Version

QR Code has a total of 40 different sizes. Each size is referred as Version, ranged from 1 to 40. Version 1 consists of 21 x 21 modules, and version 40 consists of 177 x 177 modules. Each higher version number comprises 4 additional modules per side. Each QR Code symbol version has the maximum data capacity according to the amount of data, character type and error correction level.

There are four versions available in Micro QR - M1, M2, M3 and M4. This software allows version request greater than 4 in Micro QR; however, only the maximum version allowed is realized.

By specifying 0 as the version, the software selects the minimum version that fit the data encoded. Furthermore, if the version requested is too small, the software also increases it automatically to fit the data encoded.

Note: in version 5.2, the Version parameter is enhanced to include a modifier byte to fine tune encoder behavior. See Appendix C, Version ID Parameter (updated in version 5.2) for more information.

Error Correction Level

QR Code has error correction capability to restore data if the code is dirty or damaged. Four error correction levels are available for users to choose according to the operating environment. Raising this level improves error correction capability but also increases the amount of data QR Code size.

To select error correction level, various factors such as the operating environment and QR Code size need to be considered. Level Q or H may be selected for factory environment where QR Code gets dirty, whereas Level L may be selected for clean environment with the large amount of data.

The recovery capacity of the four levels are approximately 7%, 15%, 25% and 30%.

In case of Micro QR, not all error correction level is available to all versions. For example, level Q is only available on version M4. In this case, our software bumps the version automatically to accommodate the error correction level.

Data Masking

The read reliability of a QR Code symbol can be improved through a method called data masking. Seven bit patterns (000 - 111) can be used to mask a symbol. Our software provides another value, -1, which selects the mask pattern that produces the best result.