1
0
mirror of https://git.code.sf.net/p/zint/code synced 2026-05-14 18:13:53 +00:00

DATAMATRIX: add manual FNC1 support

CODE128: error on unrecognized extra escape sequences instead of
  just passing them thru;
  fix possible shifting before manual FNC1 in 2nd position
  after single alpha (otherwise won't be recognized as AIM)
  fix not removing manual FNC1 in 1st/2nd position from content
  segs (as implied by symbology identifier)
CLI: warn if both "--dmre" and "--square" given (as "--square"
  overwrites "--dmre")
common: new routines `z_isalpha()`, `z_extra_escapes()` and
  `z_ct_set_seg_extra_escapes_eci()`
library: new helper `supports_extra_escape_mode()`;
  fix some error_number dups
BWIPP: update to latest, and allow for removal of DBAR_LTD_CC RHS
  quiet zones & extra row when have add-on in EAN/UPC composites
test suite: fix BWIPP escaping
manual/man/tcl: update for DATAMATRIX manual FNC1 support
Windows: resource scripts: make more consistent (libzint, CLI, GUI)
win32/README: update with MSVC 2026
This commit is contained in:
gitlost
2026-04-18 22:55:52 +01:00
parent f9a493522f
commit 7b076717f2
30 changed files with 1650 additions and 869 deletions

View File

@@ -1,6 +1,6 @@
Zint Barcode Generator and Zint Barcode Studio User Manual
Version 2.16.0.9
March 2026
April 2026
*******************************************************************************
* For reference the following is a text-only version of the Zint manual, *
@@ -746,9 +746,35 @@ sequences are shown in the table below.
Table 2: Escape Sequences
(Special escape sequences are available for Code 128 only to manually switch
Code Sets and insert special FNC1 characters - see 6.1.10.1 Standard Code 128
(ISO 15417) for details.)
Extra escape sequences are available for certain symbologies using the
--extraesc option that allows the insertion of special characters or, in the
case of Code 128 only, to manually switch Code Sets. Extra escapes begin with
the sequence backslash caret (“\^”):
----------------------------------------------------------------------------
Extra Escape Interpretation Available for Symbology
Sequence
-------------------- ------------------------------- -----------------------
\^1 Insert FNC1 character Code128, Data Matrix
\^^ Literal \^ Code128, Data Matrix
\^A, \^B, \^C Select Code Set A, B or C Code128 only
respectively
\^@ Exit manual Code Set selection Code128 only
and resume automatic Code Set
selection
----------------------------------------------------------------------------
Table 3: Extra Escape Sequences
Currently the only special character recognized is the Function Code 1 character
FNC1. If your data contains the sequence “\^” then it must be escaped using the
extra escape sequence “\^^”, i.e. by doubling the caret.
See 6.1.10.1 Standard Code 128 (ISO 15417) for the details on manually switching
Code Sets.
Input data can be read directly from file using the -i or --input switch as
shown below. The input file is assumed to be UTF-8 formatted unless an
@@ -789,7 +815,7 @@ The currently supported output file formats are:
tif Tagged Image File Format
txt Text file (see 4.19 Other Options)
Table 3: Output File Formats
Table 4: Output File Formats
The filename can contain directories and sub-directories also, which will be
created if they dont already exist:
@@ -1039,7 +1065,7 @@ underscores are optional.
component
-----------------------------------------------------------------------------
Table 4: Barcode Types (Symbologies)
Table 5: Barcode Types (Symbologies)
4.4 Adjusting Height
@@ -1242,7 +1268,7 @@ To summarize the more intricate details:
Yes EMF 40 0.1 N/A
-------------------------------------------------------------------
Table 5: Scaling Multipliers and Minima
Table 6: Scaling Multipliers and Minima
4.9.1 Scaling by X-dimension and Resolution
@@ -1361,7 +1387,7 @@ Latin-2 (ISO/IEC 8859-2 plus ASCII).
UPNQR Latin-2 N/A
All others ASCII N/A
Table 6: Default Character Sets
Table 7: Default Character Sets
If Zint encounters characters which can not be encoded using the default
character encoding then it will take advantage of the ECI (Extended Channel
@@ -1396,7 +1422,7 @@ behaviour.
4.11.2 Input Modes and ECI
If your data contains characters that are not in the default character set, you
may encode it using an ECI-aware symbology and an ECI value from Table 8: ECI
may encode it using an ECI-aware symbology and an ECI value from Table 9: ECI
Codes below. The ECI information is added to your code symbol as prefix data.
The symbologies that support ECI are:
@@ -1405,7 +1431,7 @@ The symbologies that support ECI are:
Code One DotCode Han Xin Code MicroPDF417 QR Code Ultracode
------------ ------------- -------------- ------------- --------- -----------
Table 7: ECI-Aware Symbologies
Table 8: ECI-Aware Symbologies
Be aware that not all barcode readers support ECI mode, so this can sometimes
lead to unreadable barcodes. If you are using characters beyond those supported
@@ -1452,11 +1478,11 @@ formatted. Zint automatically translates the data into the target encoding.
170 ISO/IEC 646 Invariant[8]
899 8-bit binary data[9]
Table 8: ECI Codes
Table 9: ECI Codes
An ECI value of 0 does not encode any ECI information in the code symbol (unless
the data contains non-default character set characters). In this case, the
default character set applies (see Table 6: Default Character Sets above).
default character set applies (see Table 7: Default Character Sets above).
If no ECI is specified or a value of 0 is given, and the data does contain
characters other than in the default character set, then Zint will automatically
@@ -1551,7 +1577,7 @@ The following symbologies accept GS1 data:
Ultracode No No No
UPC-A, UPC-E Yes (01) Yes Yes
Table 9: GS1-Enabled Symbologies
Table 10: GS1-Enabled Symbologies
4.11.3.1 GS1 Data Entry
@@ -1648,7 +1674,7 @@ characters in the output filename as shown in the table below:
@ Insert a number or * (or + on Windows)
Any other Insert literally
Table 10: Batch Filename Formatting
Table 11: Batch Filename Formatting
For instance
@@ -1664,7 +1690,7 @@ The following table shows some examples to clarify this method:
-o "my~~bar~.eps" "my00bar1.eps", "my00bar2.eps", "my00bar3.eps"
-o "t###est.png" "t 1est.png", "t 2est.png", "t 3est.png"
Table 11: Batch Filename Examples
Table 12: Batch Filename Examples
The special characters can span directories also, which is useful when creating
a large number of barcodes:
@@ -1674,7 +1700,7 @@ a large number of barcodes:
-o "dir~/file~~~.svg" "dir0/file001.svg", "dir0/file002.svg", …
"dir0/file999.svg", "dir1/file000.svg", …
Table 12: Batch Directory Examples
Table 13: Batch Directory Examples
For an alternative method of naming output files see the --mirror option in 4.14
Automatic Filenames below.
@@ -1690,7 +1716,7 @@ suffix of the file type required. For example:
zint -b MICROPDF417 --direct --filetype=pcx -d "Data to encode"
This command will output the symbol as a PCX file to stdout. For the supported
output file formats see Table 3: Output File Formats.
output file formats see Table 4: Output File Formats.
--------------------------------------------------------------------------------
@@ -1733,7 +1759,7 @@ The default and minimum scale for raster output in dotty mode is 1.
If you need to specify different ECIs for different sections of the input data,
the --seg1 to --seg9 options can be used. Each option is of the form
--segN=ECI,data where ECI is the ECI code (see Table 8: ECI Codes) and data is
--segN=ECI,data where ECI is the ECI code (see Table 9: ECI Codes) and data is
the data to which this applies. This is in addition to the ECI and data
specified using the --eci and -d options which must still be present and which
in effect constitute segment 0. For instance
@@ -1743,7 +1769,7 @@ in effect constitute segment 0. For instance
specifies 3 segments: segment 0 with ECI 9 (Greek), segment 1 with ECI 7
(Cyrillic), and segment 2 with ECI 20 (Shift JIS). Segments must be consecutive.
Naturally the symbology must be ECI-aware (see Table 7: ECI-Aware Symbologies).
Naturally the symbology must be ECI-aware (see Table 8: ECI-Aware Symbologies).
[zint -b AZTEC --eci=9 -d "Κείμενο" --seg1=7,"Текст" --seg2=20,"文章"]
@@ -2241,7 +2267,7 @@ the following members:
floats
------------------------------------------------------------------------------
Table 13: API Structure zint_symbol
Table 14: API Structure zint_symbol
To alter these values use the syntax shown in the example below. This code has
the same result as the previous example except the output is now taller and
@@ -2340,7 +2366,7 @@ the nature of the error. The errors generated by Zint are:
ZINT_WARN_HRT_TRUNCATED occurs.
------------------------------------------------------------------------------
Table 14: API Warning and Error Return Values
Table 15: API Warning and Error Return Values
To catch errors use an integer variable as shown in the code below:
@@ -2377,7 +2403,7 @@ To treat all warnings as errors, set symbol->warn_level to WARN_FAIL_ALL.
5.9 Specifying a Symbology
Symbologies can be specified by number or by name as listed in Table 4: Barcode
Symbologies can be specified by number or by name as listed in Table 5: Barcode
Types (Symbologies). For example
symbol->symbology = BARCODE_LOGMARS;
@@ -2445,7 +2471,7 @@ together when adjusting this value:
symbol->contentsegs (see 5.16 Feedback).
------------------------------------------------------------------------------
Table 15: API output_options Values
Table 16: API output_options Values
5.11 Setting the Input Mode
@@ -2483,7 +2509,7 @@ member:
MICROPDF417, PDF417, QRCODE and UPNQR only).
EXTRA_ESCAPE_MODE Process special symbology-specific escape sequences
(CODE128 only).
(CODE128 and DATAMATRIX only).
GS1SYNTAXENGINE_MODE Use the GS1 Syntax Engine (if available) to strictly
validate GS1 input.
@@ -2492,7 +2518,7 @@ member:
Group Separators (GS, ASCII 29) as FNC1s.
------------------------------------------------------------------------------
Table 16: API input_mode Values
Table 17: API input_mode Values
The default mode is DATA_MODE (CLI option --binary). (Note that this differs
from the default for the CLI and GUI, which is UNICODE_MODE.)
@@ -2515,8 +2541,8 @@ whereas
is not valid.
Permissible escape sequences (ESCAPE_MODE) are listed in Table 2: Escape
Sequences, and the special Code 128-only EXTRA_ESCAPE_MODE escape sequences are
given in 6.1.10.1 Standard Code 128 (ISO 15417).
Sequences, and the extra escape sequences (EXTRA_ESCAPE_MODE) are listed in
Table 3: Extra Escape Sequences.
The GS1 options GS1PARENS_MODE (CLI --gs1parens) , GS1NOCHECK_MODE (CLI
--gs1nocheck), GS1SYNTAXENGINE_MODE (CLI --gs1strict) and GS1RAW_MODE (CLI
@@ -2561,7 +2587,7 @@ number of elements it contains. The zint_seg structure is of the form:
int eci; /* Extended Channel Interpretation */
};
The symbology must support ECIs (see Table 7: ECI-Aware Symbologies). For
The symbology must support ECIs (see Table 8: ECI-Aware Symbologies). For
example:
#include <zint.h>
@@ -2710,7 +2736,7 @@ see which are set.
linear symbologies.
------------------------------------------------------------------------------
Table 17: API Capability Flags
Table 18: API Capability Flags
For example:
@@ -2737,7 +2763,7 @@ were overridden by Zint.
In particular for symbologies that have masks,[19] option_3 will contain the
mask used as (N + 1) << 8, N being the mask. Also Aztec Code will return the
actual ECC percentage used in option_1 as P << 8, where P is the integer
percentage, the low byte containing the values given in Table 40: Aztec Code
percentage, the low byte containing the values given in Table 41: Aztec Code
Error Correction Modes (with the addition of 0 meaning less than 5% + 3
codewords and -1 meaning minimum 3 codewords). Micro PDF417 also will return the
ECC percentage in option_1 as P << 8.
@@ -2883,8 +2909,7 @@ Standard Code 2 of 5.
6.1.2.5 Code 2 of 5 Data Logic
Data Logic does not include a check digit by default and can encode numeric
input (digits 0-9) up to a maximum of 113 digits.
Data Logic can encode numeric input (digits 0-9) up to a maximum of 113 digits.
[zint -b C25LOGIC -d "9212320967"]
@@ -3148,7 +3173,7 @@ MSI Plessey has a range of check digit options that are selectable by setting
5 Modulo-11 (NCR)
6 Modulo-11 (NCR) & Modulo-10
Table 18: MSI Plessey Check Digit Options
Table 19: MSI Plessey Check Digit Options
To not show the check digit or digits in the Human Readable Text, add 10 to the
--vers value. For example --vers=12 (API option_2 = 12) will add two hidden
@@ -3158,9 +3183,9 @@ modulo-10 check digits.
6.1.6.1 Telepen Alpha
Telepen Alpha was developed by SB Electronic Systems Limited and can encode
ASCII text input, up to a maximum of 69 characters. Telepen includes a hidden
modulo-127 check digit, added by Zint.
Telepen Alpha was developed in 1972 by SB Electronic Systems Limited and can
encode ASCII text input, up to a maximum of 69 characters. Telepen includes a
hidden modulo-127 check digit, added by Zint.
[zint -b TELEPEN --compliantheight -d "Z80"]
@@ -3301,28 +3326,33 @@ supports the encoding of ISO/IEC 8859-1 (non-English) characters in Code 128
symbols. The ISO/IEC 8859-1 character set is shown in Annex A.2 Latin Alphabet
No. 1 (ISO/IEC 8859-1).
Manual switching of Code Sets is possible using the --extraesc option (API
Manual insertion of FNC1 is possible using the --extraesc option (API
input_mode |= EXTRA_ESCAPE_MODE), which apart from processing normal escape
sequences also processes the Code 128-specific escapes \^A, \^B, \^C and \^@
(the latter turns off manual Code Set selection). For instance the following
will force switching to Code Set B for the data "5678" (normally Code Set C
would be used throughout):
sequences also processes the extra escape sequences given in Table 3: Extra
Escape Sequences. For instance
zint -b CODE128 -d "A\^1BC\^1DEF" --extraesc
encodes the data "A<FNC1>BC<FNC1>DEF", where <FNC1> represents the FNC1
character.
If the data contains an extra escape sequence, it can be escaped by doubling the
caret (^). For instance
zint -b CODE128 -d "A\^1BC\^^1DEF" --extraesc
will encode the data "A<FNC1>BC\^1DEF".
Manual switching of Code Sets is possible using the Code 128-specific extra
escapes \^A, \^B, \^C and \^@ (the latter turns off manual Code Set selection).
For instance the following will force switching to Code Set B for the data
"5678" (normally Code Set C would be used throughout):
zint -b CODE128 -d "1234\^B5678" --extraesc
The manually selected Code Set will apply until the next Code Set escape
sequence or until a \^@, with the exception that data that cannot be represented
in that Code Set will be switched as appropriate. If the data contains an extra
escape sequence, it can be escaped by doubling the caret (^). For instance
zint -b CODE128 -d "\^AABC\^^BDEF" --extraesc
will encode the data "ABC\^BDEF" in Code Set A.
There is also the extra escape \^1, which will encode a special Function Code 1
character (FNC1) anywhere you choose in the data, for instance
zint -b CODE128 -d "A\^1BC\^1DEF" --extraesc
in that Code Set will be switched as appropriate.
Zint can encode a maximum of 102 symbol characters, which allows for e.g. 202
all-numeric or 101 all-uppercase characters. Sizes above 120 digits (60
@@ -3406,7 +3436,7 @@ alphanumeric, and is of the form:
-----------------------------------------------------------------------
Table 19: DPD Input Fields
Table 20: DPD Input Fields
A warning will be generated if the Service Code, the Destination Country Code,
or the last 10 characters of the Tracking Number are non-numeric.
@@ -3524,7 +3554,7 @@ the table below:
7 000000 576688
8 0000000 7742862
Table 20: Channel Value Ranges
Table 21: Channel Value Ranges
6.1.14 BC412 (SEMI T1-95)
@@ -3770,7 +3800,7 @@ encoding methods. Valid values are shown below.
component
----------------------------------------------------------------------------
Table 21: GS1 Composite Symbology Values
Table 22: GS1 Composite Symbology Values
The data to be encoded in the linear component of a composite symbol should be
entered into a primary string with the data for the 2D component being entered
@@ -3936,7 +3966,7 @@ following table.
23 99999999999999999999999 67-bar 62 N
---------------------------------------------------------------
Table 22: Australia Post Input Formats
Table 23: Australia Post Input Formats
6.5.1.2 Reply Paid Barcode
@@ -3997,7 +4027,7 @@ rules for the input data are complex, as summarized in the following table.
------------------------------------------------------------------------------
Table 23: Royal Mail 4-State Mailmark Input Fields
Table 24: Royal Mail 4-State Mailmark Input Fields
The 6 Destination+DPS (Destination Post Code plus Delivery Point Suffix)
@@ -4007,7 +4037,7 @@ patterns are:
ANNLLNLSS AANNLLNLS ANNNLLNLS AANNNLLNL ANANLLNLS AANANLLNL
----------- ----------- ----------- ----------- ----------- -----------
Table 24: Royal Mail 4-State Mailmark Destination+DPS Patterns
Table 25: Royal Mail 4-State Mailmark Destination+DPS Patterns
where 'A' stands for full alphabetic (A-Z), 'L' for limited alphabetic (A-Z less
@@ -4103,7 +4133,7 @@ Note that only ECC 200 symbols are supported, the older standards (ECC 000 to
9 26 x 26 19 88 x 88 29 16 x 36
10 32 x 32 20 96 x 96 30 16 x 48
Table 25: Data Matrix Sizes
Table 26: Data Matrix Sizes
The largest version 24 (144 x 144) can encode 3116 digits, around 2335
alphanumeric characters, or 1555 bytes of data.
@@ -4127,7 +4157,7 @@ the following values as before:
38 12 x 88 47 26 x 48
39 16 x 64 48 26 x 64
Table 26: DMRE Sizes
Table 27: DMRE Sizes
DMRE symbol sizes may be activated in automatic size mode using the option
--dmre (API option_3 = DM_DMRE).
@@ -4136,6 +4166,18 @@ GS1 data may be encoded using FNC1 (default) or GS (Group Separator, ASCII 29)
as separator. Use the option --gssep to change to GS (API
output_options |= GS1_GS_SEPARATOR).
Manual insertion of FNC1 is possible using the --extraesc option (API
input_mode |= EXTRA_ESCAPE_MODE), which apart from processing normal escape
sequences also processes the extra escape sequences given in Table 3: Extra
Escape Sequences. For instance
zint -b DATAMATRIX -d "A\^1BC\^1DEF" --extraesc
encodes the data "A<FNC1>BC<FNC1>DEF", where <FNC1> represents the FNC1
character. If the data contains an extra escape sequence, it can be escaped by
doubling the caret (^), i.e. "\^^" encodes "\^". Note that if using ECIs with
manual FNC1s then the ECIs must be ASCII compatible.[24]
By default Zint uses a “de facto” codeword placement for symbols of size 144 x
144 (version 24). To override this and use the now clarified ISO/IEC standard
placement, use option --dmiso144 (API option_3 |= DM_ISO_144).
@@ -4179,7 +4221,7 @@ section, as summarized below.
Reserved 6 Spaces
Customer Data 6, 45 or 29 Anything (Latin-1)
Table 27: Royal Mail 2D Mailmark Input Fields
Table 28: Royal Mail 2D Mailmark Input Fields
The 12 Destination+DPS (Destination Post Code plus Delivery Point Suffix)
@@ -4192,7 +4234,7 @@ required (the rest can be blank), and the whole field can be blank:
ANSSSSSSS AANSSSSSS ANNSSSSSS AANNSSSSS ANASSSSSS AANASSSSS
----------- ----------- ----------- ----------- ----------- -----------
Table 28: Royal Mail 2D Mailmark Destination+DPS Patterns
Table 29: Royal Mail 2D Mailmark Destination+DPS Patterns
where 'A' is alphabetic (A-Z), 'N' numeric (0-9), and 'S' space.
@@ -4205,7 +4247,7 @@ the whole field can be):
ANNAASS AANNAAS ANNNAAS AANNNAA ANANAAS AANANAA
--------- --------- --------- --------- --------- ---------
Table 29: Royal Mail 2D Mailmark RTS Patterns
Table 30: Royal Mail 2D Mailmark RTS Patterns
Three sizes are defined, one rectangular, with varying maximum amounts of
optional customer data:
@@ -4216,7 +4258,7 @@ optional customer data:
Type 9 32 x 32 45 characters 10
Type 29 16 x 48 29 characters 30
Table 30: Royal Mail 2D Mailmark Sizes
Table 31: Royal Mail 2D Mailmark Sizes
Zint will automatically select a size based on the amount of customer data, or
it can be specified using the --vers option (API option_2), which takes the Zint
@@ -4244,7 +4286,7 @@ option_1) as shown in the following table.
3 Q Approx 55% of symbol Approx 25%
4 H Approx 65% of symbol Approx 30%
Table 31: QR Code ECC Levels
Table 32: QR Code ECC Levels
The size of the symbol can be specified by setting the --vers option (API
option_2) to the QR Code version required (1-40). The size of symbol generated
@@ -4267,7 +4309,7 @@ is shown in the table below.
13 69 x 69 27 125 x 125
14 73 x 73 28 129 x 129
Table 32: QR Code Sizes
Table 33: QR Code Sizes
The maximum capacity of a QR Code symbol (version 40) is 7089 numeric digits,
4296 alphanumeric characters or 2953 bytes of data. QR Code symbols can also be
@@ -4327,7 +4369,7 @@ restrictions on what characters can be encoded.
4 M4 17 x 17 Latin-1 and Shift JIS
------------------------------------------------------------------
Table 33: Micro QR Code Sizes
Table 34: Micro QR Code Sizes
Version M4 can encode up to 35 digits, 21 alphanumerics, 15 bytes or 9 Kanji
characters.
@@ -4347,7 +4389,7 @@ not available for any version, and ECC level Q is only available for version M4:
3 Q Approx 55% of symbol Approx 25% M4
----------------------------------------------------------------------
Table 34: Micro QR ECC Levels
Table 35: Micro QR ECC Levels
The defaults for symbol size and ECC level depend on the input and whether
either of them is specified.
@@ -4379,7 +4421,7 @@ option_1), however only ECC levels M and H are valid for this type of symbol.
2 M Approx 37% of symbol Approx 15%
4 H Approx 65% of symbol Approx 30%
Table 35: rMQR ECC Levels
Table 36: rMQR ECC Levels
The preferred symbol sizes can be selected using the --vers option (API
option_2) as shown in the table below. Input values between 33 and 38 fix the
@@ -4427,7 +4469,7 @@ height of the symbol while allowing Zint to determine the minimum symbol width.
19 R13x59 13 x 59 38 R17xW 17 x automatic width
------------------------------------------------------------------------------
Table 36: rMQR Sizes
Table 37: rMQR Sizes
The largest version R17x139 (32) can encode up to 361 digits, 219 alphanumerics,
150 bytes, or 92 Kanji characters.
@@ -4485,7 +4527,7 @@ Zint is given in the following table.
13 - 15 Three-digit service code. This depends on your parcel courier.
----------------------------------------------------------------------------
Table 37: MaxiCode Structured Carrier Message Format
Table 38: MaxiCode Structured Carrier Message Format
The primary message can be set at the command prompt using the --primary switch
(API primary). The secondary message uses the normal data entry method. For
@@ -4540,7 +4582,7 @@ Example maximum data lengths are given in the table below:
6 93 138 50
------------------------------------------------------------------------
Table 38: MaxiCode Data Length Maxima
Table 39: MaxiCode Data Length Maxima
* - secondary only
@@ -4586,7 +4628,7 @@ symbol. Two options, mutually exclusive, are available to change this behaviour:
11 45 x 45 23 95 x 95 35 147 x 147
12 49 x 49 24 101 x 101 36 151 x 151
Table 39: Aztec Code Sizes
Table 40: Aztec Code Sizes
Note that in symbols which have a specified size the amount of error correction
is dependent on the length of the data input and Zint will allow error
@@ -4604,7 +4646,7 @@ recommended, and anything less than 5% + 3 codewords will result in a warning).
3 >=36% + 3 codewords
4 >=50% + 3 codewords
Table 40: Aztec Code Error Correction Modes
Table 41: Aztec Code Error Correction Modes
It is not possible to select both symbol size and error correction capacity for
the same symbol. If both options are selected then the error correction capacity
@@ -4672,7 +4714,7 @@ below:
10 T 16 x automatic width 90 55
------------------------------------------------------------------------
Table 41: Code One Sizes
Table 42: Code One Sizes
Version S symbols can only encode numeric data. The width of version S and
version T symbols is determined by the length of the input data.
@@ -4710,7 +4752,7 @@ using the --secure option (API option_1), according to the following tables.
6 78 x 78 13 162 x 162
7 90 x 90
Table 42: Grid Matrix Sizes
Table 43: Grid Matrix Sizes
Mode Error Correction Capacity
------ ---------------------------
@@ -4720,7 +4762,7 @@ using the --secure option (API option_1), according to the following tables.
4 Approximately 40%
5 Approximately 50%
Table 43: Grid Matrix Error Correction Modes
Table 44: Grid Matrix Error Correction Modes
Non-ASCII data density may be maximized by using the --fullmultibyte switch (API
option_3 = ZINT_FULL_MULTIBYTE), but check that your barcode reader supports
@@ -4798,7 +4840,7 @@ to a value between 1 and 84 according to the following table.
27 75 x 75 55 131 x 131 83 187 x 187
28 77 x 77 56 133 x 133 84 189 x 189
Table 44: Han Xin Sizes
Table 45: Han Xin Sizes
The largest version (84) can encode 7827 digits, 4350 ASCII characters, up to
2175 Chinese characters, or 3261 bytes, making it the most capacious of all the
@@ -4815,7 +4857,7 @@ following table.
3 Approx 23%
4 Approx 30%
Table 45: Han Xin Error Correction Modes
Table 46: Han Xin Error Correction Modes
Non-ASCII data density may be maximized by using the --fullmultibyte switch (API
option_3 = ZINT_FULL_MULTIBYTE), but check that your barcode reader supports
@@ -4847,7 +4889,7 @@ option_1) to a value as shown in the following table.
5 EC4 Approx 25%
6 EC5 Approx 33%
Table 46: Ultracode Error Correction Values
Table 47: Ultracode Error Correction Values
Zint does not currently implement data compression by default, but this can be
initiated through the API by setting
@@ -4893,7 +4935,7 @@ as shown in the table below.
D Used for Information Based Indicia (IBI) postage.
E Used for customized mail with a USPS Intelligent Mail barcode.
Table 47: Valid FIM Characters
Table 48: Valid FIM Characters
6.7.2 Flattermarken
@@ -5081,13 +5123,13 @@ reproduced here for reference.
E SO RS . > N ^ n ~
F SI US / ? O _ o DEL
Table 48: ASCII
Table 49: ASCII
A.2 Latin Alphabet No. 1 (ISO/IEC 8859-1)
ISO/IEC 8859-1 defines additional characters common in western European
languages like French, German, Italian and Spanish. This extension is the
default encoding of many barcodes (see Table 6: Default Character Sets) when a
default encoding of many barcodes (see Table 7: Default Character Sets) when a
codepoint above hex 9F is encoded. Note that codepoints hex 80 to 9F are not
defined.
@@ -5110,7 +5152,7 @@ defined.
E ® ¾ Î Þ î þ
F ¯ ¿ Ï ß ï ÿ
Table 49: ISO/IEC 8859-1
Table 50: ISO/IEC 8859-1
Annex B. Qt Backend QZint
@@ -5200,7 +5242,7 @@ configured barcode is updated when the "Generate" button is pressed.
Annex D. Man Page ZINT(1)
% ZINT(1) Version 2.16.0.9 % % March 2026
% ZINT(1) Version 2.16.0.9 % % April 2026
NAME
@@ -5413,11 +5455,12 @@ OPTIONS
--extraesc
For Code 128 only, as well as processing the normal escape sequences above,
process the special escape sequences \^A, \^B, \^C and \^@ that allow manual
switching of Code Sets, and the special escape sequence \^1 that inserts an
FNC1 character. The sequence \@ turns off manual switching. The sequence \^^
can be used to encode data that contains special escape sequences.
As well as processing the normal escape sequences above, process the special
escape sequences beginning with \^. For Code 128 and Data Matrix, process
the escape sequence \^1 that inserts an FNC1 character, and the escaping
sequence \^^ that encodes a literal \^. For Code 128 only, process the
escape sequences \^A, \^B, \^C and \^@ that allow manual switching of Code
Sets. The sequence \^@ turns off manual switching.
--fast
@@ -5956,7 +5999,7 @@ see “GS1 Barcode Syntax Engine” at https://github.com/gs1/gs1-syntax-engine.
codeset from U+0000 to U+D7FF and U+E000 to U+FFFF (i.e. excluding surrogates).
Not to be confused with the Windows Bitmap file format BMP!
[4] The symbology names marked with an asterisk (*) in Table 4: Barcode Types
[4] The symbology names marked with an asterisk (*) in Table 5: Barcode Types
(Symbologies) above used different names in previous versions of Zint. These
names are now deprecated but are still recognised by Zint. Those marked with a
dagger (†) are replacements for BARCODE_EANX (13), BARCODE_EANX_CHK (14) and
@@ -6032,3 +6075,7 @@ recognised.
[23] The DX number may be looked up in The (Modified) Big Film Database at
https://thebigfilmdatabase.merinorus.com.
[24] ASCII-compatible ECIs are ECIs 3 to 18 and 21 to 27 (see Table 9: ECI
Codes). Note in particular that ECI 899, 8-bit binary, is not considered
ASCII-compatible.