improve P/S vs P/L choice when have ECI;
add ZINT_DEBUG_TEST dump
AUSPOST: allow variable length data input
DATAMATRIX: do `EXTRA_ESCAPE_MODE` processing up front & check have
non-zero length afterwards;
disallow `READER_INIT` and `EXTRA_ESCAPE_MODE`;
general: add new `z_zero_fill()` func & use;
add new `z_extra_escape_position_fnc1()` helper;
in `z_ct_set_seg_extra_escapes_eci` check position FNC1 whether
or not have ECI
library: escape_char_process: note escaped backslash followed by
caret by passes `EXTRA_ESCAPE_MODE` check
test suite: BWIPP: update to latest; support AUSPOST variants;
process `EXTRA_ESCAPE_MODE` escaping up front
CODE128: properly fix not switching before FNC1 in 2nd position
after alpha (commit [7b0767])
PLANET/KIX: adapt POSTNET to cater for both
general: use static strings to save a few bytes (start/stop in
particular); various other code fiddles
postal: move tables into funcs
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
`options_3`, allowing forcing of Base 256 or C40 mode a la BWIPP
for initial no. of characters specified in `option_1`, with 0
meaning all (CLI "--dmb256=" and "--dmc40=", GUI also (apart
from MAILMARK_2D, which may be added later);
export masks `DM_B256_C40_START_MASK` & `DM_SQUARE_DMRE_MASK` in
"zint.h"
ZBarcode_Encode_File: report filename (possibly truncated) in error
message on failed open
GUI: uniquify some accelerators and add some child widget getter
helpers to "mainwindow.cpp"
backend/DEVELOPER -> backend/README, with some expansion
debian/copyright: a few more fixes
BWIPP/pandoc: update to latest
tests/fuzz: adjust for new DATAMATRIX options
allow for heights smaller than `textoffset` when have add-on
(buffer overflow for raster, outside vector height for vector)
raster: EAN/UPC: make sure don't overwrite add-on stuff when
line-copying guard descenders by limiting copy width
ZBarcode_Encode_Segs: allow for multiple (stacked) rows when
setting absolute minimum height;
state stacked symbols max in error message
DBAR_EXP: check length on encoding method 6 before trying to parse
3-digit currency string with `z_to_int()`
CLI: stop looping over data args when have error;
suppress taint warning by using fixed `malloc()` size for
`arg_opts` instead of `argc`
general: use `vsnprintf()` instead of `vsprintf()` if not C89
ULTRACODE: don't call `ult_generate_codewords()` if `length` 0
from fragment processing (avoids `assert()`)
clang-tidy -> 23 & suppress some warnings
test suite: fuzz: leave Z_FUZZ_DEBUG to compiler, fix comment
general: some minor code-formatting on touched files
README.deb -> README.debian (avoid confusion with actual ".deb")
BWIPP: update to latest
backend/tests/fuzz: update "fuzz.h" to take `option_3` min/max;
update `INPUT_MODE_MASK` & `OUTPUT_OPTIONS_MASK`;
set `height`, `border_width` & `output_options` from input
(removing `Z_FUZZ_SET_OUTPUT_OPTIONS` conditional) and call
`ZBarcode_Encode_and_Print()` instead of `ZBarcode_Encode()`;
support standalone builds of "fuzz_data" & "fuzz_gs1" with
`Z_FUZZ_MAIN_READ_ARGV_1` macro;
update "fuzz_gs1" & "fuzz_gs1.dict" to better test caret/raw
modes;
gen_corpora: add `output_options`, `height` & `border_width` &
find (3rd) from fuzz_data of BIND_TOP | BIND_BOX bug
template, props Dmitry Smirnov (ticket #147, props John Crisp);
TODO: enable building with the GS1 Syntax Engine;
this involved auditing copyrights which prompted the next item
re "tif.c" and will prompt the next next item "pdf417.c"
tif.c: replaced LZW compression with tree-based one due to
"tif_lzw.h"'s original BSD-TAHOE license which has the equivalent
of the "advertising clause", new implementation (which is much
faster anyway) props Harald Kuhr and Bob Montgomery
pdf417.c: TODO: Replace all code adapted from "pdf417.frm" as it
was released under GPL v2.0 or later
pdf417.h: replace unnecessary "pdf417.frm" references with ISO/IEC
standard as 1st step re above, some expanded comments
general: Codablock-F -> Codablock F (i.e. lose hyphen)
cmake: frontend/frontend_qt: go back to only setting RPATH on macOS
as not Debian compatible and it seems it's not a good idea on
Linux anyway; TODO: check BSD + other Unixes
CLI/GUI: make "--verbose" option official and document
tools/gen_eci_sb_h.php/gen_eci_mb_h.php: add SPDX Unicode-3.0;
update haible.de/bruno tarball info - "GB18030.TXT" no longer in
"jdk-1.4.2/" so mention "libiconv-1.11/" version instead (same)
general: add various SPDXs and normalize some Copyrights
reedsol.c: malloced `logt`/`alog` tables int -> short (slight
performance improvement)
aztec.c: add copyrights, some code fiddling
BWIPP: update to latest
(ticket #347), props Frank Yellin and Rustam Abdullaev;
also improve performance of `FAST_MODE`
DATAMATRIX: assert max size on `edges` will fit in unsigned short;
use MASK for DMRE/SQUARE `option_3` setting
PDF417: assert max size on `edges` will fit in unsigned short
GUI: fix setting AZTEC size and ECC combos if not previously set
manual: fix not mentioning AZTEC re `FAST_MODE`;
gs1 mode footnote: mention 3940's length; pandoc -> 3.9
test suite: DOTCODE: account for new BWIPP input length guard
"Unbracketed AI" (caret) options for specifying GS1 input
(ticket #350, props Mario Verbruggen)
DBAR_EXP_CC/DBAR_EXPSTK_CC: fix separator over finder patterns
when linear part is greater than 4 codeblocks
general: left-over raw_text -> content_segs in comments;
update & expand some GS1 General Specs refs;
some minor code fiddling
test suite: suppress some additional ZINT_SANITIZEM false positives
(& add new ZINT_TESTUTIL_SANITIZEM_INIT helpers)
available via "--fast" (input_mode |= FAST_MODE) (ticket #347);
add new option "--azfull" (option_3 = ZINT_AZTEC_FULL) to only
consider Full symbols (not Compact ones) on automatic sizing
GUI: adjust Aztec tab to show feedback by selecting combos and
shorten message to just actual ECC;
grpCodabar min width
library: debug source input dump 200 -> 2000
common: some code fiddling (c -> ch, flg -> flag)
backend_tcl: add "-azfull" option & make capitalization of
help more consistent
general: remove some trailing whitespace
manual: make Aztec ECCs more precise, i.e. ">=" rather than ">"
(similarly in GUI)
CLI: code fiddling c -> opt
just 2 digits
cmake: set `rpath` of CLI frontend on macOS install (ticket #346,
props Hagen Röwer)
cmake: make uninstall: update to use `-E rm` if available, warn
rather than fatal error if fail to remove, note if leaving
"/zint" directory unremoved (i.e. "lib/cmake/zint")
library: de-duplicate errtxt no.
test suite: update BWIPP to latest
test suite: test_bwipp: enable & fix dotcode random test
test suite: fuzz: gen_corpora fuzz_data 1st -> 2nd
switching mode or any FNC1 after manual C mode selected and no
other non-C data - found by fuzz test "fuzz_data" - 2nd ever
trophy!
qr.h: fix typo (props https://github.com/crate-ci/typos)
(was dividing instead of multiplying doh);
make "--scalexdimdp" units check error messages better;
add more "--test" tests & have `validate_units()` etc take
`errbuf` arg to make them more test-friendly
GUI: `copy_to_clipboard()` unshadow `data` -> `fdata`
test suite: make `utf8_to_wide()` same as "backend/output.c" & fix
return vals;
add `QZint::save_to_memfile()` test
`BARCODE_MEMORY_FILE` and use in GUI for pasting to clipboard
instead of creating temporary file
CLI: allow fully case-insensitive "tiff" as filetype (saved as
".tif"), processing up to 4-letter extensions and hopefully
making filetype handling more expected;
simplify `validate_float()` (unneeded 2nd fractional max test);
add some more internal "--test" tests
BWIPP: update to latest (change from ctx to global VM) - zint tests
work as-is, no change
the barcode name table is sorted so binary chop works), adding
`ZINT_HAVE_GS1SE` define to "zint_add_test.cmake" - allows
`test_barcode_symbology()` in "test_args.c" to be a lot less
verbose; `const`-up various variables;
manual: use better MAILMAKE_4S example data and mention special
fixed string international destination
`BARCODE_CONTENT_SEGS`, `z_rt_XXX()` -> `z_ct_XXX()`;
move `encoded_data`/`row_height` to end of `zint_symbol`
(see ZXing-C++ issue #883)
manual: update re `content_segs`; `my_symbol` -> `symbol`;
improve MicroPDF417 description
use `tcolorbox` instead of `framed` for latex code blocks, works
much better, especially as now when using a background colour;
reduce gap after figures and force footnotes to bottom of page;
move most symbology figures to after some text to lessen chance
of subsection headers being orphaned on their own at end of page:
required a number of rewordings;
use named barcodes in example commands, rather than numbered;
fix "lua-crossrefs" filter to allow parentheses around
references;
various other fixes and rephrasings