Zint and libzint
----------------
Zint is a suite of programs to allow easy encoding of data in any of the
wide range of public domain barcode standards and to allow integration of
this capability into your own programs.

Zint is able to encode data in the following formats:

Code 11, Standard Code 2 of 5, IATA Code 2 of 5, Industrial Code 2 of 5,
Interleaved Code 2 of 5, Code 2 of 5 Data Logic, ITF-14, Deutche Post
Leitcode, Deutche Post Identcode, UPC-A, UPC-E, EAN-2, EAN-5, EAN-8,
EAN-13, UK Plessey, MSI Plessey, Telepen Alpha, Telepen Numeric, Code 39,
Extended Code 39, Code 93, PZN, Code 23, LOGMARS, Codabar, Pharmacode, Code
128, EAN-128, NVE-18, Code 16k, PDF417, MicroPDF417, Two-Track Pharmacode,
PostNet, PLANET, Australia Post 4-State Symbols, RM4SCC, USPS OneCode, GS1
DataBar, DataBar-14, DataBar Limited, DataBar Extended, DataBar Stacked,
Composite Symbology, Data Matrix, QR Code, Maxicode, Aztec Code, EAN-13,
Micro QR, Korea Post Barcode, HIBC Code 128, HIBC Code 39, HIBC Data Matrix,
HIBC PDF417, HIBC MicroPDF417, HIBC QR Code, HIBC Aztec Code, Japanese Postal
Code, Code 49, Channel Code, Code One, Grid Matrix, FIM and Flattermarken,
Codablock-F, DotCode, Han Xin Code, rMQR.

Output can be saved as BMP, EPS, GIF, PCX, TIF, EMF, PNG or SVG. 

PROJECT HISTORY
---------------

Version 2.5.0:
Support for DotCode and Han Xin code. ECI code processing. Output to BMP, GIF
and PCX. Added bold and small text options. Reintroduction of Codablock-F.
Many minor fixes and improvements.

Version 2.5.1:
Numerous bugfixes, especially with Data Matrix thanks to extensive testing
by brunt@SF

Version 2.6.0:
Update front end to Qt5. Output to EMF and TIF. Copy to clipboard. Update
to latest draft of DMRE. Usual bugfixes.

Version 2.6.1:
Library bugfixes: EDIFACT unlatch in Data Matrix, Add UPNQR, Improved Aztec
data compression, Detect Code 128 data too long, Make error codes consistent.
GUI improvements: Additional clipboard options, remove border width bug,
remove changing background colour bug, remember more settings and make GUI
more consistent with user expectations. All windows now resizable and more
information given when batch processing.

Version 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.

Version 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.

Version 2.6.4:
Fixed bugs: EMF output, maxicode plot/content
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.

Version 2.6.5:
Fixed bugs:
backend/main.c was missing
Maxicode bullseye rastering for scale = 0.5
Crash in uto to eci.
eci ISO 8859-16 table missing data line
upce check for 7 digit input (causes crash) and BARCODE_UPCE_CHK -> BARCODE_UPCE mapping removed
US imail check for invalid barcode identifier and allow 0/5/9/11 length zip
maxicode code set correction
cmake flags for debugging and sanitize options
unit tests for the changes, with a simple test suite based on qrencode/tests

Version 2.6.6:
Fixed bugs:
Ticket 161: PDF row size may be set
Ticket 155: PDF numeric compaction
Ticket 164: crash due to call of svg_plot withnull vector
Ticket 119: Crash on bullseye raster drawing
qtzint: Micro-QR version option choice corrected (+1 missing).
Datamatrix: code corruption when ECI was encoded and base256 encoding was automatically chosen.

Version 2.6.7 2019-10-07:

Changes:
Ticket 127: Allow to code ECI 3 if explicitly given for debug purposes.
***Incompatible change**
"--eci 3" now leads to included ECI information.
"--eci 0" may now be used to not include any ECI information.
The default of the parameter changed from 3 to 0.

Fixed bugs:
Ticket 146, 165: fix wrong encoding of RSS composite codes

Version 2.7.0 2019-12-05:
Changes:
- 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 Qridmatrix optimisation for GB2312
- removed depreciated interface for gLabels program. Please use current interface.

Fixed bugs:
- Many improvements in composite codes
- SVG output corrected for messages containing "<" and "&".
- GS1-128 and RSS may only be used with GS1 contents
- Han Xin chinese character handling

Version 2.7.1 2020-02-01:
Changes:
- QR encoding optimized to get smaller code matrix results
- PDF417: remove obsolete codeword number option in qzint.
  Option removed in qtzint.
- Removed annex B (3 digit country codes) and annex C (GS1 General Specification)
  from the manual. This material may be found elsewhere.
- MAC homebrew remark added to the documentation
- Correct cmake file to match BSD-3-clause licence
Bugs:
- Correct uninitialized warning in gridmatrix.call
- do not export internal functions
- raster painting of UPC-A bound check
- pdf417 documentation corrected: change flag -security to -secure
- Dot Code encoding ECI number corrected
- Corrected postscript plotting error
- Datamatrix: corrected possible buffer overrun in 3 characters to 2 byte
  encodings.
- In 2.7.0 removed interface "ZBarcode_Render" still declared
- vc6 make was missing (trivial) resource.h

Version 2.7.2 Not released jet
Changes:
(New) Tests for auspost, codablock, composite, dotcode, general, telepen, upcean,
  all output formats, 
- QR, Han Xin, Grid Matrix: the multi byte compaction schemes (ex: Kanji)
  are used by some decoders as codepage information (Ex: GB2312) and output
  may be translated to UTF-8. This may destroy the data in a not controlable
  manner.
  In consequence, multibyte compaction schemes are disabled by default.
  The new option --fullmultibyte (option_3 = ZINT_FULL_MULTIBYTE) enables this
  optimisation.
Bugs:
- Ticket 181 penetration test found many bugs:
  - Auspost: null bytes in content caused segfault
  - Codablock: data 0x1a..0x1f caused segfault
  - Dotcode: overrun in binary mode, overrun in codeword_array buffer
      Correct encoding of HT/FS/GS/RS when shifting to code set B
  - empty or unreadable input file
  - telepen: buffer overflow
  - EANUCC: buffer overflow on multiple + (multiple extension bars)
  - Maxicode: index overrun on numeric compaction
  - CodeOne: Simple i indexing not sp + i in C1_ASCII numeric latch loop.
  - Aztec: free memory
- Ticket 183: Databar stacked separator correction
- Ticket 182: Output bitmap type was char, where some targets assigned 0
  if pixel colour >127 (e.g. negative). API change to use unsigned char.
- HanXin: wrong codepage, gb2312 instead gb18030.
- PDF417: corrected alloced sizes to max characters
- Ticket 189: FNC1 encodation fixed (FLG(0) missing after FLG(n))

CONTACT US
----------
The home of Zint is:

	<http://www.sourceforge.net/projects/zint>

The code is now also mirrored at:

        <https://github.com/woo-j/zint>

For feature requests or bug reports please either join the mailing list at

	<https://lists.sourceforge.net/lists/listinfo/zint-barcode>
	
or add a ticket on the project's SourceForge.


BEFORE POSTING TO THE LIST
--------------------------
Please note the following points...
* Zint is primarily developed for Linux. While we have some experience of
  using Zint on Windows we may be unable to resolve problems if they are
  specific to other operating systems. We cannot provide support for using
  Zint with commercial packages such as MS Office or Crystal Reports.
* Always ensure you are using the latest version of Zint before posting bug
  reports - the bug you are reporting may have been fixed already.
* Please remember to state what operating system you are using and include
  enough information to allow us to reproduce the error - including input
  data if appropriate.
* Please DO NOT post messages asking for us to change the license
  arrangements. You will be ignored.
* Please remember that Zint is developed by volunteers. While we attempt to
  answer all messages within a week, this is highly dependant on external
  circumstances.
