Zint: Manual

7. Legal and Version Information

7.1 License

Zint, libzint and Zint Barcode Studio are Copyright ©2020 Robin Stuart. All historical versions are distributed under the GNU General Public License version 3 or later. Version 2.5 is released under a dual license: the encoding library is released under the BSD license whereas the GUI, Zint Barcode Studio, is released under the GNU General Public License version 3 or later.

Telepen is a trademark of SB Electronic Systems Ltd.

QR Code is a registered trademark of Denso Wave Incorporated.

Microsoft, Windows and the Windows logo are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

Linux is the registered trademark of Linus Torvalds in the U.S. and other countries.

Zint.org.uk website design and hosting provided by Robert Elliott.

7.2 Patent Issues

All of the code in Zint is developed using information in the public domain, usually freely available on the Internet. Some of the techniques used may be subject to patents and other intellectual property legislation. It is my belief that any patents involved in the technology underlying symbologies utilised by Zint are 'unadopted', that is the holder does not object to their methods being used.

Any methods patented or owned by third parties or trademarks or registered trademarks used within Zint or in this document are and remain the property of their respective owners and do not indicate endorsement or affiliation with those owners, companies or organisations.

7.3 Version Information

Version Changes
0.1 (as Zebar) Draws UPC-A. UPC-E, EAN-8, EAN-13, Interlaced 2 of 5, Codabar, Code 39, Extended Code 39 and Code 93 barcodes and Add-on codes EAN-2 and EAN-5 without parity. 13/11/2006
0.2 Added Code 128 (which is now the default), Code 11, Code 2 of 5, Add-on codes EAN-2 and EAN-5 parity and MSI/Plessey without check digit. 12/12/2006
0.3 Added MSI/Plessey Mod 10 check and 2 x Mod 10 check options, Telepen ASCII and Telepen numeric, Postnet, RM4SCC. Code has been tidied up quite a bit. Bind option added. 30/12/2006
0.4 Added barcode stacking (now stacks up to 16 barcodes) and Code16k (stub). 15/1/2007
0.5 Added Australia Post 4-State Barcodes and Pharmacode (1 and 2 track). 4-state codes now draw with correct height/width ratio. 28/2/2007
0.6 Added Plessey and some derivative codes (EAN-128, Code 128 subset B, Auspost Reply, Auspost Routing, Auspost Redirect, ITF-14). Tidied up code again: separated symbologies into more files and put all lookup tables into arrays (much reducing the amount of code, especially for Code 39e and Code 93). Errors now output to stderr. Added proper input verification. Distribution now packs with HTML pages instead of separate README. Outputs to PNG. Outputs colour. User variable whitespace and border width. Box option. Fixed EAN add-on bug. Added whitespace and height options. Project name changed to Zint to avoid conflict with extant trade name. Added escape character input. 1/4/2007
1.0 Corrected problem with escape character codes. Supports PDF417. This completes the list of features I originally wanted (plus a few more), hence skip to version 1.0. 20/4/2007
1.1 Added more derivatives (Code 2 of 5 Matrix, IATA and Data Logic, Truncated PDF417, Deutsche Post Leitcode and Identcode, Pharmazentralnummer, Planet) and Flattermarken. Tidied up 2 of 5 code. 26/4/2007
1.2 Supports Data Matrix ECC200 (by absorption of IEC16022 code by Stefan Schmidt et al). Added reverse colours, FIM, MSI/Plessey Modulo 11 and Modulo 11/10. Corrected Code 16k check digit calculation. 28/5/2007
1.3 Supports USPS OneCode and LOGMARS. Brought all usage information into one User Manual document. 13/6/2007
1.4 Added NVE-18 support. Corrected some problems with compilation and input verification. Command line option handling now uses getopt(), and all the switches have changed. Added –font option. 20/6/2007
1.5 Pulled everything together to make an API. Corrected errors with EAN-13, PDF417 and LOGMARS. Added EPS output. Added QR Code support using libqrencode. Corrected ISBN verification error. Re-compiled documentation in HTML form. Put in place proper error handling routines. --font option removed. Encoding is now done with a restructured zint_symbol structure. Added make install option and optional QR Code support to Makefile. Corrected minor problem with 4-State Codes. Restructured code into fewer source code files. Added MicroPDF417 support. 12/8/2007
1.5.1 Added formatting code to EPS output of EAN and UPC symbols according to EN 797:1996. Checked against and, where appropriate, altered or corrected to comply with ISO 16388 and ISO 15417 including Latin-1 support. Altered default image settings, added automatic ITF border. Corrected error with USPS OneCode. Tidied up Code 39 quite a bit, added Mod 43 options. 3/9/2007
1.5.2 Added extended ASCII support to Code 16k. Corrected Code 128 error. Added Maxicode support by integrating code by John Lien. 26/9/2007
1.5.3 Made huge corrections to Maxicode support by removing and re-writing much of John's code. Maxicode now supports extended ASCII and modes 4, 5 and 6. 10/10/2007
1.5.4 Added GS1 DataBar (Reduced Space Symbology) support. 26/11/2007
1.5.5 Added composite symbology support. Corrected errors with GS1-128 and PDF417/MicroPDF417 byte processing. Transferred licence to GPL version 3. 9/3/2008
1.6 Data Matrix ECC200, Maxicode and Australia Post now use common Reed-Solomon functions – this also fixes a bug in Maxicode error correction and replaces the last of the Lien code. Added PNG output for Maxicode symbols. Removed some useless code. Updated QR support for libqrencode v2.0.0. 22/4/2008
1.6.1 Major restructuring of PNG generating code: Now draws UPCA and EAN symbols properly and puts human readable text into the image. Also corrected some nasty 'never ending loop' bugs in Code 128 and check digit bugs in PostNet and Planet. 8/7/2008
1.6.2 Added KIX Code support and PNG image rotation. Corrected a bug affecting extended ASCII support in Code 128 and Code 16k. 28/7/2008.
2.0 beta Added support for Aztec Code, Codablock-F, Code 32, EAN-14 and DAFT Code. Rearranged symbology numbers to match Tbarcode v8. Corrected a never ending loop bug in EAN-128. 29/9/2008
2.0 beta r2 Many corrections and bugfixes. (Code 11, Code 128, EAN-128, Aztec Code, Codablock-F, Code 16k, Postnet, PLANET, NVE-18, PZN, Data Matrix ECC200, Maxicode and QR Code)
2.0 Made corrections to Aztec Code and tested output with bcTester. Added Aztec Runes, Micro QR Code and Data Matrix ECC200 ECC 000-140. Updated e-mail information. 18/11/2008
2.1 Reinstated Korea Post barcodes, harmonised bind and box options, moved Unicode handling into backend and added input_mode option, added size options to Data Matrix ECC200, added NULL character handling for Codablock-F, Code 128, Code 16k, Extended Code 39, Code 93, Telepen, Maxicode, Data Matrix ECC200 ECC 200, PDF417 and MicroPDF417. Added GS1 support for Code 16k, Codablock-F and Aztec Code. Added scale and direct to stdout options. Rebult Data Matrix ECC200 ECC 200 encoding algorithms to support NULL encoding and GS1 data encoding. 31/1/2009
2.1.1 Minor Data Matrix ECC200 bugfix and added HIBC options. 10/2/2009
2.1.2 Added SVG output option. Improved Japanese character support including Unicode > Shift-JIS capability. Bugfixes for Data Matrix ECC200 (missing characters at end of string) and Codablock-F (K1/K2 check digit and row indicators above row 6). 1/3/2009
2.1.3 Many improvements to the QZint GUI which is now renamed "Zint Barcode Studio 0.2". Added Japanese Postal Barcode, Code 49 and Channel Code and made corrections to Data Matrix ECC200 (Binary mode data compression terminates too soon), Aztec Code (Bug when automatically resizing after removing "all 0" and "all 1" codewords) and Code 128 (Extended ASCII characters become corrupt). 19/5/2009
2.1.4 Many stability improvements including removal of buffer overruns in Code 39, LOGMARS, PZN, Aztec Code and Composite CC-A. Addition of files for compiling on MS Windows platform - tested successfully on XP and Vista. 19/6/2009
2.2 Added Code One and GS1 support in Code 49. Changed GUI binary name to zint-qt and brought GUI up to version 1.0. Made some minor bugfixes to Code 39, ITF-14, Aztec Code, Code 128 and Code 16K. Added 'rest' button to GUI. Included .spec file from Radist. 18/7/2009
2.2.1 Data encoding bugfixes for Aztec Code, Data Matrix ECC200, USPS One Code and PDF417. Symbol plotting bugfixes for MicroPDF417 and 2D components of composite symbols. Text formatting bugfix for Qt renderer and a couple of compiler fixes for MSVC PNG image output. 6/8/2009
2.2.2 A beta release previewing the new API structure. Better NULL character support with "nullchar" value removed. Added loading from file and sequence dialogs in Barcode Studio. 29/9/2009
2.3 Fixed problems with Micro QR Code and rebuilt QR Code support removing dependence on libqrencode. Improved Kanji character support for QR Code and Micro QR Code which now auto-detects and automatically converts to Shift-JIS. Added Grid Matrix symbology with Kanji character support and automatic conversion to GB 2312. Removed no_qr compile option. Advanced Barcode Studio version number to match library version number. 23/11/2009
2.3.1 Removed Codablock-F. Redesigned scale function so that human readable text and Maxicode symbols can be scaled consistently. Corrected encoding bugs with Code 128/Code 16k and Data Matrix ECC200 ECC 050. Added --notext option to CLI. 7/3/2010
2.3.2 Corrected many bugs in GS1 DataBar Extended thanks to the careful study of the code by Pablo Orduña at the PIRAmIDE project. Similarly corrected some bugs in Maxicode thanks to Monica Swanson at Source Technologies. Also minor bugfixes for ISBN and Aztec Code, and added some small features like a --square option in the CLI. 29/5/2010
2.4 Built extensions to the API for integrating with glabels with thanks to Sam Lown and Jim Evins. Added code optimisation and input from stdin thanks to Ismael Luceno. Reinstated escape character input. Simplification of Barcode Studio. 13/9/2010
2.4.1 & 2.4.2 A whole host of bugfixes including correction of ECC routines for Code-1 and addition of batch processing at the command line.
2.5 Support for DotCode and Han Xin code. ECI code processing. Output to BMP, GIF and PCX. Added bold text option. Many minor bugfixes and improvements. (Due for release November 2016).
2.6 Output to EMF and TIFF. Update frontend to QT5. Copy to clipboard on KDE and Windows.
2.6.1 Various bugfixes to backend, including improved Aztec code processing. Many improvements to GUI including resizable screens and more output while batch processing, more consistent use of dialogues. 27/8/2017
2.6.2 Further bugfixes in Aztec and DotCode. Expand escape sequence support to API and GUI. Handle UTF BOM. Bugfix raster images of Maxicode. 22/10/2017
2.6.3 New symbology Royal Mail 4-state Mailmark. Added North America VIN verification. Bugfixes for TIF and EMF output and escape character handling. 15/02/2018
2.6.4 Datamatrix DMRE updated to the ISO/IEC29158 version. This is incompatible in the way, that the old -vers numbers for DMRE are re-assigned. The separator of GS1-datamatrix may be switched from FNC1 to GS. GS1 field length check AI 8009 and 7230 to 7239 currected.
2.6.5 minor bugfixes
2.6.6 minor bugfixes
2.6.7 Allow to code ECI 3 if explicitly given for debug purposes.
2.7.0 new features:
  • Automatic height option added to qzint
  • DotCode in line with new specification
  • New GS1 AIs 7240, 235, 417, 7040, 8026, updated checks for 7007, 8008
  • New Symbology rMQR
  • QR and Gridmatrix optimisation for GB2312
  • removed depreciated interface for gLabels program. Please use current interface.
  • Add Ultracode implementation
  • Disable full multi byte compression for QR family, Han Xin and Gridmatrix by default. It may be enabled by a new option.

7.4 Sources of Information

Below is a list of some of the sources used in rough chronological order:

  • Nick Johnson's Barcode Specifications
  • Bar Code 1 Specification Source Page
  • SB Electronic Systems Telepen website
  • Pharmacode specifications from Laetus
  • Morovia RM4SCC specification
  • Austalia Post's 'A Guide to Printing the 4-State Barcode' and bcsample source code
  • Plessey algorithm from GNU-Barcode v0.98 by Leonid A. Broukhis
  • GS1 General Specifications v 8.0 Issue 2
  • PNG: The Definitive Guide and wpng source code by Greg Reolofs
  • PDF417 specification and pdf417 source code by Grand Zebu
  • Barcode Reference, TBarCode/X User Documentation and TBarCode/X demonstration program from Tec-It
  • IEC16022 source code by Stefan Schmidt et al
  • United States Postal Service Specification USPS-B-3200
  • Adobe Systems Incorporated Encapsulated PostScript File Format Specification
  • BSI Online Library
  • Libdmtx Data Matrix ECC200 decoding library

7.5 Standard Compliance

Zint was developed to provide compliance with the following British and international standards:

  • BS EN 797:1996 Bar coding - Symbology specifications - 'EAN/UPC'
  • BS EN 798:1996 Bar coding - Symbology specifications - 'Codabar'
  • ISO/IEC 12323:2005 AIDC technologies - Symbology specifications - Code 16K
  • ISO/IEC 15417:2007 Information technology - Automatic identification and data capture techniques - Code 128 bar code symbology specification
  • ISO/IEC 15438:2015 Information technology - Automatic identification and data capture techniques - PDF417 bar code symbology specification
  • ISO/IEC 16022:2006 Information technology - Automatic identification and data capture techniques - Data Matrix ECC200 bar code symbology specification
  • ISO/IEC 16023:2000 Information technology - International symbology specification – Maxicode
  • ISO/IEC 16388:2007 Information technology - Automatic identification and data capture techniques - Code 39 bar code symbology specification
  • ISO/IEC 18004:2015 Information technology - Automatic identification and data capture techniques - QR Code bar code symbology specification
  • ISO/IEC DIS 20830:2019 (Draft 2019-10-10) Information technology - Automatic identification and data capture techniques - Han Xin Code bar code symbology specification
  • ISO/IEC 24723:2010 Information technology - Automatic identification and data capture techniques - GS1 Composite bar code symbology specification
  • ISO/IEC 24724:2011 Information technology - Automatic identification and data capture techniques - GS1 DataBar bar code symbology specification
  • ISO/IEC 24728:2006 Information technology - Automatic identification and data capture techniques - MicroPDF417 bar code symbology specification
  • ISO/IEC 24778:2008 Information technology - Automatic identification and data capture techniques - Aztec Code bar code symbology specification
  • ISO/IEC JTC1/SC31N000 (Draft 2018-6-8) Information technology - Automatic identification and data capture techniques - Rectangular Micro QR Code (rMQR) bar code symbology specification.
  • Uniform Symbology Specification Code One (AIM Inc., 1994)
  • ANSI/AIM BC12-1998 - Uniform Symbology Specification Channel Code
  • ANSI/AIM BC6-2000 - Uniform Symbology Specification Code 49
  • ANSI/HIBC 2.3-2009 - The Health Industry Bar Code (HIBC) Supplier Labeling Standard
  • AIM ISS-X-24 - Uniform Symbology Specification Codablock F
  • AIMD013 (v 1.34a) – Information technology – Automaic identification and data capture techniques – Bar code symbology specification – DotCode (Revised 19th Feb 2009)
  • AIMD014 (v 1.63) - Information technology, Automatic identification and data capture techniques - Bar code symbology specification - Grid Matrix (Released 9th Dec 2008)
  • AIMD-015:2010 (v 0.8) – DRAFT Bar code symbology specification – Han Xin Code (Revised 25th March 2010)
  • AIM ITS/04-001 International Technical Standard – Extended Channel Interpretations Part 1: Identification Schemes and Protocol (Released 24th May 2004)
  • AIM ITS/04-023 International Technical Standard – Extended Channel Interpretations Part 3: Register (Released 15th July 2004)
  • AIMD/TSC15032-43 (v 0.99c) - International Technical Specification – Ultracode Symbology (Draft) (Released 4th Nov 2015)
  • GS1 General Specifications Release 20.0 (Jan 2020)