Move project history/version from manual.txt, backend/README into new ChangeLog

This commit is contained in:
gitlost 2021-07-07 10:46:26 +01:00
parent 3c1869b032
commit 37cb277397
4 changed files with 707 additions and 563 deletions

658
ChangeLog Normal file
View File

@ -0,0 +1,658 @@
Version 2.9.1.9 (dev) (not released yet)
========================================
**Incompatible changes**
------------------------
- Add halign (horizontal align) to struct zint_vector_string
NOTE: backward incompatible text drawing for UPC/EAN
- Change height and row_height array to floats
NOTE: may cause changes in heights
Changes
-------
- Move project history/version from manual.txt and backend/README into this file
- Command line switches -d or -i for code data may now be at any position.
- Add rotation for vector formats
- Change double to float for performance in many internal places
- Ticket 197: Allow scaling in substeps. Warn if scaling < 0.5 as pixels lost.
- Ticket 197: add output option to bypass time-intensive buffer_plot()
(OUT_BUFFER_INTERMEDIATE)
- Reduce BMP size by using 1 bit per pixel (except Ultracode)
- New warn_level field, WARN_FAIL_ALL
- Add ZPL compatibility mode (preliminary)
- Remove version info from zint.h and put in zintconfig.h via zintconfig.h.in
- Add ZBarcode_Cap()
- Add GUI symbology filter, separate settings for each symbology
- Require cmake 3.5, use PNG::PNG and add Qt6 build option
- Make library fully stack-based so reentrant apart from file operations
- Performance improvements (large data) for AZTEC/HANXIN/GRIDMATRIX/PDF417/QR
- Option scmvv for MaxiCode #212; postcode needn't be space-filled
- eci: Add support for all ECIs (Big5, Korean, UCS-2BE)
- CLI: Handle UTF-8 args on Windows; -b <barcode name>
- DATAMATRIX: make EOD encodation strictly ISO 16022 compliant
- png.c: Use palette for file size savings
- tif.c: Use palette/bilevel/LZW to reduce file size, alpha/CMYK support
- Option gs1parens (GS1PARENS_MODE)
- MAXICODE: Rejig raster output to more closely match ISO 16023:2000
- C25STANDARD/C25INTER/C25IATA/C25LOGIC/C25IND: add check digit option (#216)
- Use zint-64.svg for smoother icons, props frhun
- Add whitespace_height to zint_symbol (vertical whitespace)
- AZTEC: optimize populate_map (good for small data)
- CMake: Windows compatible, backend/tests & frontend/tests now subprojects
using new zint_add_test.cmake file, static build, new ZINT_USE_PNG and
ZINT_USE_QT options, getopt moved to subproject and getopt detection,
sanitizer flag detection, and many other improvements, props Alonso Schaich
- PLESSEY: add options NCR weighted mod-10, hide check digit(s) in HRT
- Fuller error messages; more comments zint.h
Bugs
----
- Code16k selects GS1 mode by default in GUI
- Ultracode: use white pixels instead background for white modules.
- EMF: fix Ultracode colours.
- Ultracode: fix count of codewords when using reader init mode
- Databar Limited: add 5 right guard spaces (ISO/IEC 24723:2010 6.2 (e))
- Data Matrix: avoid unnecessary latch in X12 mode at end of data, #208
- Data Matrix: fix eod shift -> 0 pad
- POSTNET/PLANET: remove extra 1 module space
- Aztec: fix bit-stuffing (again!) and Aztec Rune: fix for data >= 128
- EAN composite: allow for check digit + buffer overflow for too long add-on
- Han Xin fix 0xFFE terminator
- GUI: Use UTF-8 for QSettings (non-ASCII was getting garbled on restore)
- DOTCODE: Fix best_mask -> high_score prime test
- CODEONE: various fixes, ECI support
- #218 Prevent buffer overflow in ean_leading_zeroes by checking max lengths
- MAXICODE: fix mask typos for ECI 3/4 bytes
- Fix UPCEAN small font ignored/disabled (introduced [1adba1])
- get_best_eci: check UTF-8 before returning 26
- MAXICODE: fix shifting from sets C/D/E to A/B (only latch available)
- EAN14, NVE18: fix checksum calc for zero-filled input
- png: ULTRA: allow for fgcolour if bind/box (MR #111)
- DOTCODE: allow for max 200 cols in CLI, GUI, Tcl
- CODEONE/DATAMATRIX/MAILMARK/PLESSEY: fix some 32-bit/portability bugs
- CODABAR: fix CALCIUM define address use, props Alonso Schaich
- DATAMATRIX/CODEONE: Use LCM in look ahead tests to avoid floats (#228)
- raster/output: use new isfintf() to test floats integral (CodeQL)
- ZBarcode_Encode: don't reinit symbol->outfile, props Alonso Schaich
- CODEONE: is_last_single_ascii() out-of-bounds, #232 CI-Fuzz, props Jan Schrewe
- library: compat symbology 39 fix; ISBN: "X" check
Version 2.9.1 2020-08-04
========================
Changes
-------
- Ticket 122: Implement transparency support
- Ticket 129: -nobackground option added
- -fg and -bg may contain an alpha channel
- structure zint_symbol may now contain an alpha channel as output
- Added DPD Symbology
- Add support for Unicode escape characters
Bugs
----
- EMF text colour does not change
- Fix QPainterPath dependency for Visual Studio
Version 2.9.0 2020-07-31
========================
Changes
-------
- Dotcode: adapt to AIM DOC Revision 4
- New option "-separator=" for zint to specify the separator height of stacked
symbologies.
- make internal routines invisible by a static function definition.
- CODE11: make adding check digits an option, selectable to 2 (default as now),
1 or none
- LOGMARS restrict max length to 30 per MIL-STD-1189 Rev. B; make check digit
optional
- CODE39/EXCODE39: max length now 85
- VIN code extended to international licence plates
- CODABAR: 3 data characters minimum (plus start/stop), check digit option added
- Channel Code: performance improvement
- QT GUI:
- GRIDMATRIX/HX/MQR/QRCODE/RMQR: allow separate selection of size/ECC
- add DAFT and VIN Symbologies
- Separarator option for DATAMATRIX
- Ticket 162: parse escape sequences
- gui element reassigments
- UPC/EAN/ITF-14 Composite: Ticket 72: new option --addongap (default:9) to set
the gap between code and composite.
- TCL Backend: The following symbology names were renamed:
- Matrix2of5 -> Standard2of5
- PDF417Trunc -> PDF417Compact
- RSS14Stacked -> GS1DataBarStacked
- RSS14Stacked -> GS1DataBarStacked
- RSS14StackedOmni -> GS1DataBarSstackedOmni
- RSS14ExpandedStacked -> GS1DataBarExpandedStacked
- OneCode -> USPSIntelligentMail
- EAN128-CC -> GS1-128-CC
- RSS14-CC -> GS1DataBarOmni-CC
- RSSLimited-CC -> GS1DataBarLimited-CC
- RSSExpandedStacked-CC -> GS1DataBarExpanded-CC
- RSSEXPanded-CC -> GS1DataBarExpanded-CC
- RSS14Stacked-CC -> GS1DataBarStacked-CC
- RSS14Omni-CC -> GS1DataBarStackedOmni-CC
- RSSExpandedStacked-CC -> GS1DataBarExpandedStacked-CC
** Potential incompatibility **
- API Symbol names changed but old names preserved in zint.h
- BARCODE_C25MATRIX -> BARCODE_C25STANDARD
- BARCODE_EAB128_CC -> BARCODE_GS1_128
- BARCODE_RSS14 -> BARCODE_DBAR_OMN
- BARCODE_RSS_LTD -> BARCODE_DBAR_LTD
- BARCODE_RSS_EXP -> BARCODE_DBAR_EXP
- BARCODE_PDF417TRUNC -> BARCODE_PDF417COMP
- BARCODE_RSS14STACK -> BARCODE_DBAR_STK
- BARCODE_RSS14STACK_OMNI -> BARCODE_DBAR_OMNSTK
- BARCODE_RSS_EXPSTACK -> BARCODE_DBAR_EXPSTK
- BARCODE_ONECODE -> BARCODE_USPS_IMAIL
- BARCODE_EAN128_CC -> BARCODE_GS1_128_CC
- BARCODE_RSS14_CC -> BARCODE_DBAR_OMN_CC
- BARCODE_RSS_LTD_CC -> BARCODE_DBAR_LTD_CC
- BARCODE_RSS_EXP_CC -> BARCODE_DBAR_EXP_CC
- BARCODE_RSS14STACK_CC -> BARCODE_DBAR_STK_CC
- BARCODE_RSS_EXPSTACK_CC -> BARCODE_DBAR_EXPSTK_CC
Bugs
----
- Ticket 185 EMF export corrections
- fine scaling by the use of float arithmetic
- full header (extension1&2) with correct size field
- Ticket 190: Aztec buffer overrun fixed
- Ticket 191 suppress clang-tidy warnings: raster.c, composite.c, qr.c
- Ultracode internal encoding bugs, ECI 899
- GS1 data: exclude DEL character
- Ticket 192: missing malloc.h include for Windows compilers.
- Correct GS1 AI 253 & 255 length from 14 to 13
- Codablock F changes:
- FNC4 may not be split over rows.
- Use Code128 routine for one line Codablock FIM
- Correct column range to 9 ... 62
- allow new options: row count and column count, border_width and HIBC mode
- pad correctly empty and last row
- separator length correction
- Code128 changes:
- Correctly encode CodeA charset with control-character only data
- Improve coding of Extended ASCII (FNC4)
- Checksum calculation overflow protection
- EAN128 may reduce length
- Check for incomplete escape sequences on data specification: "\" without
following character.
- Code16K fixes: remove extended ASCII latch, pad character
- Restructuring to have common code centralized:
- Code128 routines for Codablock&Code16K
- output.c has common routines from raster.c and symbologies.
- HIBC_39: restrict max length to 68 otherwise to avoid overrun
- Code One: protect agains overrun
- Telepen: allow DEL
- GS1 Databar/ GS1-128 Composite:
- Separator bar corrections
- Ticket 200: spurious additional row
- Correct names in GUI
- Compact PDF417:
- Add missing stop pattern.
- Rename in GUI: "PDF417 Truncated" to "Compact PDF417".
- PDF417: Optimize text compaction mode switch.
- Human readable representation: Code128, Code39, Code93 special characters
are shown by a blank.
- ITF14: Ticket 201: allow bind option
Version 2.8.0 2020-04-10
========================
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.
- Add new symbology "Ultra Code" with the ability to output colour codes.
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))
- PCX format: added missing bytes_per_line if bitmap width is odd.
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.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.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.6.6 2019-09-18
========================
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.5 2019-09-02
========================
Fixed bugs
----------
backend/main.c was missing
Maxicode bullseye rastering for scale = 0.5
Crash in utf 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.4 2019-08-30
========================
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.3 2018-02-15
========================
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.2 2017-10-22
========================
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.1 2017-08-27
========================
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.0 2017-05-12
========================
Update front end to Qt5. Output to EMF and TIF. Copy to clipboard. Update
to latest draft of DMRE. Usual bugfixes.
Version 2.5.1 2017-04-03
========================
Numerous bugfixes, especially with Data Matrix thanks to extensive testing
by brunt@SF
Version 2.5 2016-11-13
======================
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.4.3 2011-05-16
========================
Includes minor bugfixes
Version 2.4.1 2011-04-19 & 2.4.2 2011-05-04
===========================================
A whole host of bugfixes including correction of ECC routines
for Code-1 and addition of batch processing at the command line.
Version 2.4 2010-09-13
======================
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.
Version 2.3.2 2010-05-29
========================
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.
Version 2.3.1 2010-04-07
========================
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.
Version 2.3 2009-11-23
======================
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.
Version 2.2.2 2009-09-29
========================
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.
Version 2.2.1 2009-08-06
========================
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.
Version 2.2 2009-07-18
======================
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.
Version 2.1.4 2009-06-19
========================
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.
Version 2.1.3 2009-05-19
=============
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).
Version 2.1.2 2009-03-01
========================
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).
Version 2.1.1 2009-02-10
========================
Minor Data Matrix ECC200 bugfix and added HIBC options.
Version 2.1 2009-01-31
======================
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.
Version 2.0 2008-11-18
======================
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.
Version 2.0 beta r2 2008-10-19
==============================
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)
Version 2.0 beta 2008-09-29
===========================
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.
Version 1.6.2 2008-07-28
========================
Added KIX Code support and PNG image rotation. Corrected a bug
affecting extended ASCII support in Code 128 and Code 16k.
Version 1.6.1 2008-07-08
========================
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.
Version 1.6 2008-04-22
======================
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.
Version 1.5.5 2008-03-09
========================
Added composite symbology support. Corrected errors with GS1-128 and
PDF417/MicroPDF417 byte processing. Transferred licence to GPL version 3.
Version 1.5.4 2007-11-26
========================
Added GS1 DataBar (Reduced Space Symbology) support.
Version 1.5.3 2007-10-10
========================
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.
Version 1.5.2 2007-09-26
========================
Added extended ASCII support to Code 16k. Corrected Code 128 error.
Added Maxicode support by integrating code by John Lien.
Version 1.5.1 2007-09-03
========================
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.
Version 1.5 2007-08-12
======================
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.
Version 1.4 2007-06-20
======================
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.
Version 1.3 2007-06-13
======================
Supports USPS OneCode and LOGMARS. Brought all usage information into
one User Manual document.
Version 1.2 2007-05-28
======================
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.
Version 1.1 2007-04-26
======================
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.
Version 1.0 2007-04-20
======================
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.
Version 0.6 2007-04-01
======================
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.
Version 0.5 2007-02-28
======================
Added Australia Post 4-State Barcodes and Pharmacode (1 and 2 track).
4-state codes now draw with correct height/width ratio.
Version 0.4 2007-01-15
======================
Added barcode stacking (now stacks up to 16 barcodes) and Code16k (stub).
Version 0.3 2006-12-30
======================
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.
Version 0.2 2006-12-12
======================
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.
Version 0.1 (as Zebar) 2006-11-13
=================================
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.

335
README
View File

@ -7,340 +7,41 @@ this capability into your own programs.
Zint is able to encode data in the following formats: 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, 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 Interleaved Code 2 of 5, Code 2 of 5 Data Logic, ITF-14, Deutshe Post Leitcode,
Leitcode, Deutche Post Identcode, UPC-A, UPC-E, EAN-2, EAN-5, EAN-8, Deutshe Post Identcode, UPC-A, UPC-E, EAN-2, EAN-5, EAN-8, EAN-13, ISBN, UK
EAN-13, UK Plessey, MSI Plessey, Telepen Alpha, Telepen Numeric, Code 39, Plessey, MSI Plessey, Telepen Alpha, Telepen Numeric, Code 39, Extended Code 39,
Extended Code 39, Code 93, PZN, Code 23, LOGMARS, Codabar, Pharmacode, Code Code 93, PZN, Code 32, LOGMARS, Codabar, Pharmacode, Code 128, GS1-128, NVE-18,
128, EAN-128, NVE-18, Code 16k, PDF417, MicroPDF417, Two-Track Pharmacode, Code 16k, PDF417, MicroPDF417, Two-Track Pharmacode, POSTNET, PLANET, Australia
PostNet, PLANET, Australia Post 4-State Symbols, RM4SCC, USPS OneCode, GS1 Post 4-State Symbols, RM4SCC, Dutch Post KIX, USPS Intelligent Mail, GS1 DataBar
DataBar, DataBar-14, DataBar Limited, DataBar Extended, DataBar Stacked, Omnidirectional, GS1 DataBar Limited, GS1 DataBar Expanded, GS1 DataBar Stacked,
Composite Symbology, Data Matrix, QR Code, Maxicode, Aztec Code, EAN-13, Composite Symbology, Data Matrix, QR Code, MaxiCode, Aztec Code, Aztec Runes,
Micro QR, Korea Post Barcode, HIBC Code 128, HIBC Code 39, HIBC Data Matrix, EAN-14, Micro QR, Korea Post Barcode, HIBC Code 128, HIBC Code 39, HIBC Data
HIBC PDF417, HIBC MicroPDF417, HIBC QR Code, HIBC Aztec Code, Japanese Postal Matrix, HIBC PDF417, HIBC MicroPDF417, HIBC QR Code, HIBC Codablock-F, HIBC
Code, Code 49, Channel Code, Code One, Grid Matrix, FIM and Flattermarken, Aztec Code, Japanese Postal Code, Code 49, Channel Code, Code One, Grid Matrix,
Codablock-F, DotCode, Han Xin Code, rMQR and Ultracode. DAFT, FIM and Flattermarken, Codablock-F, DotCode, Han Xin Code, rMQR,
Ultracode, UPNQR, VIN, and DPD Code.
Output can be saved as BMP, EPS, GIF, PCX, TIF, EMF, PNG or SVG. Output can be saved as BMP, EPS, GIF, PCX, TIF, EMF, PNG or SVG.
PROJECT HISTORY PROJECT HISTORY
--------------- ---------------
Please see "ChangeLog" in the project root directory.
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.8.0 2020-04-10:
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.
- Add new symbology "Ultra Code" with the ability to output colour codes.
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))
- PCX format: added missing bytes_per_line if bitmap width is odd.
Version 2.9.0 2020-07-31:
Changes:
- Dotcode: adopt to AIM DOC Revision 4
- New option "-separator=" for zint to specify the separator height of stacked
symbologies.
- make internal routines invisible by a static function definition.
- CODE11: make adding check digits an option, selectable to 2 (default as now),
1 or none
- LOGMARS restrict max length to 30 per MIL-STD-1189 Rev. B; make check digit
optional
- CODE39/EXCODE39: max length now 85
- VIN code extended to international licence plates
- CODABAR: 3 data characters minimum (plus start/stop), check digit option added
- Channel Code: performance improvement
- QT GUI:
- GRIDMATRIX/HX/MQR/QRCODE/RMQR: allow separate selection of size/ECC
- add DAFT and VIN Symbolgies
- Separarator option for DATAMATRIX
- Ticket 162: parse escape sequences
- gui element reassigments
- UPC/EAN/ITF-14 Composite: Ticket 72: new option --addongap (default:9) to set
the gap between code and composite.
- TCL Backend: The following symbology names were renamed:
- Matrix2of5 -> Standard2of5
- PDF417Trunc -> PDF417Compact
- RSS14Stacked -> GS1DataBarStacked
- RSS14Stacked -> GS1DataBarStacked
- RSS14StackedOmni -> GS1DataBarSstackedOmni
- RSS14ExpandedStacked -> GS1DataBarExpandedStacked
- OneCode -> USPSIntelligentMail
- EAN128-CC -> GS1-128-CC
- RSS14-CC -> GS1DataBarOmni-CC
- RSSLimited-CC -> GS1DataBarLimited-CC
- RSSExpandedStacked-CC -> GS1DataBarExpanded-CC
- RSSEXPanded-CC -> GS1DataBarExpanded-CC
- RSS14Stacked-CC -> GS1DataBarStacked-CC
- RSS14Omni-CC -> GS1DataBarStackedOmni-CC
- RSSExpandedStacked-CC -> GS1DataBarExpandedStacked-CC
*** Potential incompatibility ***
- API Symbol names changed but old names preserved in zint.h
- BARCODE_C25MATRIX -> BARCODE_C25STANDARD
- BARCODE_EAB128_CC -> BARCODE_GS1_128
- BARCODE_RSS14 -> BARCODE_DBAR_OMN
- BARCODE_RSS_LTD -> BARCODE_DBAR_LTD
- BARCODE_RSS_EXP -> BARCODE_DBAR_EXP
- BARCODE_PDF417TRUNC -> BARCODE_PDF417COMP
- BARCODE_RSS14STACK -> BARCODE_DBAR_STK
- BARCODE_RSS14STACK_OMNI -> BARCODE_DBAR_OMNSTK
- BARCODE_RSS_EXPSTACK -> BARCODE_DBAR_EXPSTK
- BARCODE_ONECODE -> BARCODE_USPS_IMAIL
- BARCODE_EAN128_CC -> BARCODE_GS1_128_CC
- BARCODE_RSS14_CC -> BARCODE_DBAR_OMN_CC
- BARCODE_RSS_LTD_CC -> BARCODE_DBAR_LTD_CC
- BARCODE_RSS_EXP_CC -> BARCODE_DBAR_EXP_CC
- BARCODE_RSS14STACK_CC -> BARCODE_DBAR_STK_CC
- BARCODE_RSS_EXPSTACK_CC -> BARCODE_DBAR_EXPSTK_CC
Bugs:
- Ticket 185 EMF export corrections
- fine scaling by the use of float arithmetic
- full header (extension1&2) with correct size field
- Ticket 190: Aztec buffer overrun fixed
- Ticket 191 suppress clang-tidy warnings: raster.c, composite.c, qr.c
- Ultracode internal encoding bugs, ECI 899
- GS1 data: exclude DEL character
- Ticket 192: missing malloc.h include for Windows compilers.
- Correct GS1 AI 253 & 255 length from 14 to 13
- Codablock F changes:
- FNC4 may not be split over rows.
- Use Code128 routine for one line Codablock FIM
- Correct column range to 9 ... 62
- allow new options: row count and column count, border_width and HIBC mode
- pad correctly empty and last row
- separator length correction
- Code128 changes:
- Correctly encode CodeA charset with control-character only data
- Improve coding of Extended ASCII (FNC4)
- Checksum calculation overflow protection
- EAN128 may reduce length
- Check for incomplete escape sequences on data specification: "\" without
following character.
- Code16K fixes: remove extended ASCII latch, pad character
- Restructuring to have common code centralized:
- Code128 routines for Codablock&Code16K
- output.c has common routines from raster.c and symbologies.
- HIBC_39: restrict max length to 68 otherwise to avoid overrun
- Code One: protect agains overrun
- Telepen: allow DEL
- GS1 Databar/ GS1-128 Composite:
- Separator bar corrections
- Ticket 200: spurious additional row
- Correct names in GUI
- Compact PDF417:
- Add missing stop pattern.
- Rename in GUI: "PDF417 Truncated" to "Compact PDF417".
- PDF417: Optimize text compaction mode switch.
- Human readable representation: Code128, Code39, Code93 special characters
are shown by a blank.
- ITF14: Ticket 201: allow bind option
Version 2.9.1 2020-08-04:
Changes:
- Ticket 122: Implement transparency support
- Ticket 129: -nobackground option added
- -fg and -bg may contain an alpha channel
- structure zint_symbol may now contain an alpha channel as output
- Added DPD Symbology
- Add support for Unicode escape characters
Bugs:
- EMF text colour does not change
- Fix QPainterPath dependency for Visual Studio
Version 2.9.2 not released yet:
***Incompatible change**
- Add halign to struct zint_vector_string NOTE: backward incompatible UPC/EAN
Changes:
- Command line switches -d or -i for code data may now be at any position.
- Add rotation for vector formats
- Change double to float for performance in many internal places
- Ticket 197: Allow scaling in substeps.
Warn if scaling < 0.5 as pixels are lost.
- Ticket 197: add output option to bypass time-intensive buffer_plot()
(OUT_BUFFER_INTERMEDIATE)
- Reduce BMP size by using 1 bit per pixel (except Ultracode)
- Remove backend Qt interface and incorporate into frontend GUI
- Add ZPL compatibility mode (preliminary)
- Remove version info from zint.h and put in zintconfig.h via zintconfig.h.in
- Add ZBarcode_Cap()
- Add GUI symbology filter, separate settings for each symbology
- Require cmake 3.5, use PNG::PNG and add Qt6 build option
- Make library fully stack-based so reentrant apart from file operations
- Performance improvements (large data) for Aztec, Han Xin, Grid Matrix, PDF417
and QR
- Option scmvv for MaxiCode #212; postcode needn't be space-filled
- eci: Add support for all ECIs (Big5, Korean, UCS-2BE)
- CLI: Handle UTF-8 args on Windows; -b <barcode name>
- DATAMATRIX: make EOD encodation strictly ISO 16022 compliant
- png.c: Use palette for file size savings
- tif.c: Use palette/bilevel/LZW to reduce file size, alpha/CMYK support
- Option gs1parens (GS1PARENS_MODE)
- MAXICODE: Rejig raster output to more closely match ISO 16023:2000
- C25STANDARD/C25INTER/C25IATA/C25LOGIC/C25IND: add check digit option (#216)
Bugs:
- Code16k selects GS1 mode by default in GUI
- Ultracode: use white pixels instead background for white modules.
- EMF: fix Ultracode colours.
- Ultracode: fix count of codewords when using reader init mode
- Databar Limited: add 5 right guard spaces (ISO/IEC 24723:2010 6.2 (e))
- Data Matrix: avoid unnecessary latch in X12 mode at end of data, #208
- Data Matrix: fix eod shift -> 0 pad
- POSTNET/PLANET: remove extra 1 module space
- Aztec: fix bit-stuffing (again!) and Aztec Rune: fix for data >= 128
- EAN composite: allow for check digit + buffer overflow for too long add-on
- Han Xin fix 0xFFE terminator
- GUI: Use UTF-8 for QSettings (non-ASCII was getting garbled on restore)
- DOTCODE: Fix best_mask -> high_score prime test
- CODEONE: various fixes, ECI support
- #218 Prevent buffer overflow in ean_leading_zeroes by checking max lengths
- MAXICODE: fix mask typos for ECI 3/4 bytes
- Fix UPCEAN small font ignored/disabled (introduced [1adba1])
- get_best_eci: check UTF-8 before returning 26
- MAXICODE: fix shifting from sets C/D/E to A/B (only latch available)
- EAN14, NVE18: fix checksum calc for zero-filled input
CONTACT US CONTACT US
---------- ----------
The home of Zint is: The home of Zint is:
<http://www.sourceforge.net/projects/zint> <http://www.sourceforge.net/projects/zint>
The code is now also mirrored at: The code is now also mirrored at:
<https://github.com/woo-j/zint> <https://github.com/woo-j/zint>
For feature requests or bug reports please either join the mailing list at For feature requests or bug reports please either join the mailing list at
<https://lists.sourceforge.net/lists/listinfo/zint-barcode> <https://lists.sourceforge.net/lists/listinfo/zint-barcode>
or add a ticket on the project's SourceForge. or add a ticket on the project's SourceForge.

View File

@ -76,9 +76,9 @@ Reader Initialisation: Some symbologies allow a special character to be included
ECI: The ECI mechanism allows for multi-language data to be encoded in ECI: The ECI mechanism allows for multi-language data to be encoded in
symbols which would usually support only Latin-1 (ISO/IEC 8859-1) symbols which would usually support only Latin-1 (ISO/IEC 8859-1)
characters. This can be useful, for example, if you need to encode characters. This can be useful, for example, if you need to encode
Cyrillic characters, but should be used with caution as not all scanners Cyrillic characters, but should be used with caution as not all scanners
support this method. support this method.
Two other concepts that are important are raster and vector. Raster is a low Two other concepts that are important are raster and vector. Raster is a low
level bitmap representation of an image. BMP, GIF, PCX, PNG and TIF are raster level bitmap representation of an image. BMP, GIF, PCX, PNG and TIF are raster
@ -105,7 +105,7 @@ cmake ..
make make
sudo make install sudo make install
The command line program can be accessed by typing The CLI command line program can be accessed by typing
zint {options} zint {options}
@ -114,7 +114,7 @@ The GUI can be accessed by typing
zint-qt zint-qt
To test that the installation has been successful a shell script is included in To test that the installation has been successful a shell script is included in
the /frontend folder. To run the test type the frontend sub-directory. To run the test type
./test.sh ./test.sh
@ -151,7 +151,7 @@ brew install zint
2.4 zint tcl backend 2.4 zint tcl backend
-------------------- --------------------
The tcl backend may be built using the provided TEA build on Linux, Windows, The tcl backend may be built using the provided TEA build on Linux, Windows,
Mac-OS and Android. For Windows, a MS-VC6 makefile is also available. Mac-OS and Android. For Windows, an MS-VC6 makefile is also available.
3. Using Zint Barcode Studio 3. Using Zint Barcode Studio
@ -566,7 +566,7 @@ Latin-1 then you should check that the resulting barcode can be understood by
your target barcode reader. Zint will generate a warning message when an ECI your target barcode reader. Zint will generate a warning message when an ECI
code that has not been explicitly requested has been inserted into a symbol. code that has not been explicitly requested has been inserted into a symbol.
GS1 data can be encoded in a number of symbologies. Application identifiers GS1 data can be encoded in a number of symbologies. Application Identifiers
should be enclosed in [square brackets] followed by the data to be encoded (see should be enclosed in [square brackets] followed by the data to be encoded (see
6.1.11.3). To encode GS1 data use the --gs1 option. GS1 mode is assumed (and 6.1.11.3). To encode GS1 data use the --gs1 option. GS1 mode is assumed (and
doesn't need to be set) for GS1-128, EAN-14, DataBar and Composite symbologies doesn't need to be set) for GS1-128, EAN-14, DataBar and Composite symbologies
@ -820,8 +820,9 @@ size of the symbol. These options are discussed in section 6 of this guide.
5. Using the API 5. Using the API
================ ================
Zint has been written using the C language and currently only has an API for Zint has been written using the C language and has an API for use with C/C++
use with C language programs. language programs. A Qt interface is available in the backend_qt sub-directory,
and a Tcl interface is available in the backend_tcl sub-directory.
The libzint API has been designed to be very similar to that used by the GNU The libzint API has been designed to be very similar to that used by the GNU
Barcode package. This allows easy migration from GNU Barcode to Zint. Zint, Barcode package. This allows easy migration from GNU Barcode to Zint. Zint,
@ -931,8 +932,8 @@ allow you to do this:
int ZBarcode_Buffer(struct zint_symbol *symbol, int rotate_angle); int ZBarcode_Buffer(struct zint_symbol *symbol, int rotate_angle);
int ZBarcode_Encode_and_Buffer(struct zint_symbol *symbol, unsigned char *source, int ZBarcode_Encode_and_Buffer(struct zint_symbol *symbol,
int length, int rotate_angle); unsigned char *source, int length, int rotate_angle);
int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol, char *filename, int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol, char *filename,
int rotate_angle); int rotate_angle);
@ -985,18 +986,18 @@ you to do this:
int ZBarcode_Buffer_Vector(struct zint_symbol *symbol, int rotate_angle); int ZBarcode_Buffer_Vector(struct zint_symbol *symbol, int rotate_angle);
int ZBarcode_Encode_and_Buffer_Vector(struct zint_symbol *symbol, int ZBarcode_Encode_and_Buffer_Vector(struct zint_symbol *symbol,
unsigned char *source, int length, int rotate_angle); unsigned char *source, int length, int rotate_angle);
int ZBarcode_Encode_File_and_Buffer_Vector(struct zint_symbol *symbol, int ZBarcode_Encode_File_and_Buffer_Vector(struct zint_symbol *symbol,
char *filename, int rotate_angle); char *filename, int rotate_angle);
Here the "vector" pointer is set to a header which contains pointers to lists Here the "vector" pointer is set to a header which contains pointers to lists
of structures representing the various elements of the barcode: rectangles, of structures representing the various elements of the barcode: rectangles,
hexagons, strings and circles. To draw the barcode, each of the element types is hexagons, strings and circles. To draw the barcode, each of the element types is
iterated in turn, and using the information stored is drawn by a rendering iterated in turn, and using the information stored is drawn by a rendering
system. For instance, to draw a barcode using a rendering system with system. For instance, to draw a barcode using a rendering system with
"prepare_canvas()", "draw_rect()", "draw_hexagon()", "draw_string()", and prepare_canvas(), draw_rect(), draw_hexagon(), draw_string(), and draw_circle()
"draw_circle()" routines available: routines available:
struct zint_vector_rect *rect; struct zint_vector_rect *rect;
struct zint_vector_hexagon *hexagon; struct zint_vector_hexagon *hexagon;
@ -1004,31 +1005,31 @@ struct zint_vector_string *string;
struct zint_vector_circle *circle; struct zint_vector_circle *circle;
prepare_canvas(symbol->vector->width, symbol->vector->height, symbol->scale, prepare_canvas(symbol->vector->width, symbol->vector->height, symbol->scale,
symbol->fgcolour, symbol->bgcolor, rotate_angle); symbol->fgcolour, symbol->bgcolor, rotate_angle);
rect = symbol->vector->rectangles; rect = symbol->vector->rectangles;
while (rect) { while (rect) {
draw_rect(rect->x, rect->y, rect->width, rect->height, rect->colour); draw_rect(rect->x, rect->y, rect->width, rect->height, rect->colour);
rect = rect->next; rect = rect->next;
} }
hexagon = symbol->vector->hexagons; hexagon = symbol->vector->hexagons;
while (hexagon) { while (hexagon) {
draw_hexagon(hexagon->x, hexagon->y, hexagon->diameter, hexagon->rotation): draw_hexagon(hexagon->x, hexagon->y, hexagon->diameter, hexagon->rotation):
hexagon = hexagon->next; hexagon = hexagon->next;
} }
string = symbol->vector->strings; string = symbol->vector->strings;
while (string) { while (string) {
draw_string(string->x, string->y, string->fsize, string->rotation, draw_string(string->x, string->y, string->fsize, string->rotation,
string->halign, string->text, string->length): string->halign, string->text, string->length):
string = string->next; string = string->next;
} }
circle = symbol->vector->circles; circle = symbol->vector->circles;
while (circle) { while (circle) {
draw_circle(circle->x, circle->y, circle->diameter, circle->colour): draw_circle(circle->x, circle->y, circle->diameter, circle->colour):
circle = circle->next; circle = circle->next;
} }
5.6 Setting Options 5.6 Setting Options
@ -1411,7 +1412,7 @@ GS1_MODE | Encodes GS1 data using FNC1 characters.
| |
ESCAPE_MODE | Process input data for escape sequences. ESCAPE_MODE | Process input data for escape sequences.
GS1PARENS_MODE | Parentheses (round brackets) used in input data instead of GS1PARENS_MODE | Parentheses (round brackets) used in input data instead of
| square brackets to delimit GS1 application identifiers | square brackets to delimit GS1 Application Identifiers
| (parentheses must not otherwise occur in the data). | (parentheses must not otherwise occur in the data).
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
@ -1875,7 +1876,7 @@ components.
6.1.12.1 DataBar Omnidirectional and DataBar Truncated 6.1.12.1 DataBar Omnidirectional and DataBar Truncated
------------------------------------------------------ ------------------------------------------------------
Previously known as RSS-14 this standard encodes a 13 digit item code. A check Previously known as RSS-14 this standard encodes a 13 digit item code. A check
digit and application identifier of (01) are added by Zint. (A 14 digit code digit and Application Identifier of (01) are added by Zint. (A 14 digit code
that appends the check digit may be given, in which case the check digit will be that appends the check digit may be given, in which case the check digit will be
verified.) To produce a truncated symbol set the symbol height to a value verified.) To produce a truncated symbol set the symbol height to a value
between 32 and 13. Normal DataBar Omnidirectional symbols should have a height between 32 and 13. Normal DataBar Omnidirectional symbols should have a height
@ -3006,223 +3007,7 @@ those owners, companies or organisations.
7.3 Version Information 7.3 Version Information
----------------------- -----------------------
v0.1 - (as Zebar) Draws UPC-A. UPC-E, EAN-8, EAN-13, Interlaced 2 of 5, This has been moved to "ChangeLog" in the project root directory.
Codabar, Code 39, Extended Code 39 and Code 93 barcodes and Add-on codes EAN-2
and EAN-5 without parity. 13/11/2006
v0.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
v0.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
v0.4 - Added barcode stacking (now stacks up to 16 barcodes) and Code16k
(stub). 15/1/2007
v0.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
v0.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
v1.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
v1.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
v1.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
v1.3 - Supports USPS OneCode and LOGMARS. Brought all usage information into
one User Manual document. 13/6/2007
v1.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
v1.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
v1.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
v1.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
v1.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
v1.5.4 - Added GS1 DataBar (Reduced Space Symbology) support. 26/11/2007
v1.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
v1.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
v1.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
v1.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.
v2.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
v2.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)
v2.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
v2.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
v2.1.1 - Minor Data Matrix ECC200 bugfix and added HIBC options. 10/2/2009
v2.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
v2.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
v2.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
v2.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
v2.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
v2.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
v2.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
v2.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
v2.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
v2.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
v2.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. 19/4/2011 &
4/5/2011
v2.4.3 - Includes minor bugfixes 16/5/2011
v2.5 Support for DotCode and Han Xin code. Restore support for Codablock-F.
ECI code processing. Output to BMP, GIF and PCX. Added bold text option. Many
minor bugfixes and improvements.
13/11/2016
v2.6 - Output to EMF and TIF. Update frontend to Qt5. Copy to clipboard on
KDE and Windows.
12/5/2017
v2.6.1 - Various bugfixes to backend, including improved Aztec code processing.
Many improvements to GUI including resizeable screens and more output while
batch processing, more consistent use of dialogues.
27/8/2017
v2.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
v2.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
v2.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 corrected.
v2.6.5 - minor bugfixes
v2.6.6 - minor Bugfixes
v2.6.7 - Allow to code ECI 3 if explicitly given for debug purposes.
v2.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 deprecated interface for gLabels program. Please use current
interface.
v2.8.0
- 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 7.4 Sources of Information
-------------------------- --------------------------

View File

@ -131,7 +131,7 @@ Recent versions of Qt no longer supply a specific component for Visual Studio
2015, but you can use "MSVC 2017 32-bit" instead as it's compatible. 2015, but you can use "MSVC 2017 32-bit" instead as it's compatible.
For information on building a standalone version of Zint Studio using Visual For information on building a standalone version of Zint Studio using Visual
Studio 2015, see "frontend_qt/howto_build_qzint_using_msvs2015.txt" Studio 2015, see "frontend_qt\howto_build_qzint_using_msvs2015.txt"
CMake and Visual Studio CMake and Visual Studio