TBarcode2D_rMQRCode

The component is used to create the rMQR Code barcode symbols. It's defined in the prMQRCode unit.

rMQR CodeA rMQR Code (also known as Rectangular Micro QR Code) is a two-dimensional matrix symbology that is easy to read and can store large amounts of information. It was developed in 2022 by Denso Wave as a variant of their QR Code. rMQR Code stores about ten times more data than Micro QR Code does in a rectangular shape that is suitable for printing in narrow spaces. Like the other symbols in the QR Code family, rMQR Code efficiently encodes KANJI characters.

To save space, rMQR Code uses a finder pattern and a smaller "finder sub-pattern" instead of the three finder patterns that QR Code uses.


Error checking and correcting (ECC)

There are two user-selectable levels of error correction, as shown in following table, offering the capability of recovery from the amounts of damage in the table:

Values of ECCLevel propertyECC levelsRecevory capacities (%) (approx.)
elMediumM15
elHighestH30

You can use the ECCLevel property to specify the error correction code level for a rMQR Code symbol. It can be one of these values: elMedium, and elHighest, corresponding to the error checking and correcting levels M and H. These values are defined in the prMRCode unit.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol size will by used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by the ECCLevel property (see also the "Symbol sizes" section below). In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel can be used to get the factual error correction code level.


Symbol sizes

There are 32 sizes of rMQR Code symbol. referred to as version 1 to 32, in increasing order of data capacity. You can use the MinVersion and the MaxVersion properties to specifiy the minimum and maximum sizes for a rMQR Code symbol. They can be one of values from 1 to 32 (defined in the prMQRCode unit), corresponding to the versions 1 to 32. The smallest symbol size that accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes. The CurrentVersion property can be used to get the factual symbol size.

These symbol sizes and the maximum data capacity of each version are listed in following table:

VersionSymbol size (modules)ECC levelData capacities
Numeric modeAlphanumeric modeByte modeKanji mode
17 * 43M12753
H5321
27 * 59M2616116
H14863
37 * 77M45271911
H211395
47 * 99M64392716
H3018138
57 * 139M102624226
H54332214
69 * 43M2616116
H14863
79 * 59M47292012
H2314106
89 * 77M71433018
H3723169
99 * 99M97594025
H49302012
109 * 139M147896138
H75463119
1111 * 27M14863
H9642
1211 * 43M42261811
H2314106
1311 * 59M71433018
H3320148
1411 * 77M100604125
H52312113
1511 * 99M133815534
H66402717
1611 * 139M1981208251
H97594025
1713 * 27M2616116
H14863
1813 * 43M62372616
H2817127
1913 * 59M88533622
H45271811
2013 * 77M124755131
H66402717
2113 * 99M1711037144
H80493320
2213 * 139M25115210464
H126765232
2315 * 43M76463119
H3320138
2415 * 59M112684628
H59362415
2515 * 77M157956540
H71432918
2615 * 99M2071268653
H111684628
2715 * 139M30118212577
H162986741
2817 * 43M90553723
H47281912
2917 * 59M131795433
H633862616
3017 * 77M1831117647
H87533622
3117 * 99M2361439860
H131795433
3217 * 139M36121915092
H1781087446

If the barcode text does not fill the maximum data capacity of the rMQR Code symbol, remaining data capacity of the symbol will be filled by using PAD characters. If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by the MaxVersion property, an OnInvalidLength or OnInvalidDataLength (only for Delphi/C++ Builder 2009 or later) event will occur.


Quiet zones

The minimum quiet zone is equal to 2 modules on all four sides. So the minimum values of LeadingQuietZone, TrailingQuietZone, TopQuietZone, and BottomQuietZoneproperties are equal to 2.


Character set

The AllowEscape property should be set to true in order to place the FNC1 characters or the ECI indicator blocks.


Escape sequences

If the AllowEscape property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:


Encoding modes

rMQR Code has four encoding modes as Numeric mode, Alphanumeric mode, Kanji mode and Byte mode respectively in decreasing order of encoding density. All 256 8-bits value are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The character sets in each mode are listed in the following:

The EncodePolicy property indicates how to use these encoding mode by the component. This property can be one of these values (defined in the pQRCodeCom unit):


Extended Channel Interpretation (ECI)

The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Four broad types of interpretations are supported in rMQR Code:

The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding. The ECI is identified by an integer (up to 6 digits) which is encoded in the rMQR Code symbol by the ECI indicator block. The escape sequence "\e[<ECI_Number>]" is used to place the ECI indicator block to the barcode text:

ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of rMQR Code symbols. For example:

ABC\e[123]DEFabc\e[000003]def

The default interpretation for rMQR Code is ECI 000003 representing the ISO/IEC 8859-1 character set.

The AllowEscape property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.


Encode GS1 barcode symbol

Set the AllowGS1 property to True in order to encode the GS1 barcode data directly. In this case, use the GS1 barcode text directly as the value for the Barcode or Data property, or as the value for the Barcode or Data parameter in the DrawTo, DrawToSize, Print, and PrintSize methods.

Note, in GS1 barcode text, parentheses "()" should be used to enclose Application Identifiers (AIs), and '((' should be used to insert a '(' character; the FNC1 is inserted automatically, there is no need to insert it manually. For example: '(01)00625251888886(18)110201(10)456((D)CB(21)9876543210'.


Properties:
Methods:
Events:

(*): The Data property, OnInvalidDataLength and OnInvalidDataChar events are available only for the Delphi/C++ Builder 2009 or later.

Contents