ANNOUNCE: tzint 1.3 released
============================
tzint is a Tcl extension for generating barcodes. It embeds the libzint backend by Robin Stuart and exposes it as a single command that returns
the result in a Tcl variable or writes it to a file — as a module
matrix, an X bitmap, or as SVG, EPS and further file formats. No Tk is needed. Developed by Alexander Schoepe and Joerg Mehring, it requires
Tcl 8.5 or newer; libpng and zlib are needed for the raster file formats
and can be left out.
1.3 is a large release: the embedded backend moves from libzint 2.4.4 of 2013 to 2.16.0 of December 2025, which brings 22 more symbologies and
five more file formats, and the Tcl side gains the options that go with them. It also fixes a defect that silently discarded perfectly good
symbols.
Download / Repository: https://fossil.sowaswie.de/tzint
English
-------
Backend and symbologies:
* The embedded libzint goes from 2.4.4 to 2.16.0. The Tcl side reaches
106 symbologies where it reached 84, among the new ones DotCode, Han
Xin, Ultracode, rMQR, BC412, DX Film Edge, Royal Mail Mailmark in both
its 2D and 4-state form, UPU S10, DPD, VIN, CEPNet, and EAN-8 and EAN-13
as names of their own including their composite variants.
* Names and values now live in one table instead of two parallel arrays, which is what let the twenty-two entries be inserted without the two drifting apart.
Output:
* The "file" command writes BMP, GIF, PCX, PNG, TIF, EMF, EPS and SVG, chosen by the extension of the file name. Only PNG, EPS and SVG were available before.
* EPS and SVG no longer come from the two patched copies of the 2.4.4
output code that tzint carried since 2014. They are produced by the
current libzint through its in-memory output, so they follow the backend from here on.
* -vectorscale keeps the size vector output has always had in tzint.
libzint itself draws twice as large; "-vectorscale zint" selects that instead, which matches the raster output exactly.
New options:
* -eci selects the Extended Channel Interpretation, 26 being UTF-8 and 3 being ISO 8859-1. An EPC QR code for a bank transfer needs it: its data declares its own character set, and without the option libzint picks one
of its choosing.
* -dpi and -dpmm set the resolution recorded in BMP, EMF, PCX, PNG and TIF.
* Colours take eight hex digits as RRGGBBAA besides the six of RRGGBB,
so a transparent background is now reachable.
Fixes:
* A warning from libzint no longer throws the result away. libzint
answers 1 to 4 when it did produce the symbol and has something to
remark, and tzint treated every non-zero answer as a failure — the named variable stayed empty without raising an error. A single euro sign in
the input was enough to trigger it, which made GiroCode payloads fail silently. Status 5 and above still deliver nothing, as before.
* Colours are checked for being hex digits. "-fg zzz" used to pass as a short form and was turned down by libzint later with a status code
instead of a message.
* The three compiler warnings the extension produced are gone.
Incompatible changes:
* EPS and SVG come from the current libzint and no longer match the
output of the patched files byte for byte: one path instead of many rectangles, a different font for the text line, and about one percent difference in height at large scales. Widths are unchanged.
* A file written with the extension .txt now holds a hex dump of the
encoded data where libzint 2.4.4 wrote the module matrix as readable
rows of 0 and 1. Use the "bits" command for a module matrix.
* Callers that treated any non-zero result as a failure now receive a
symbol in the warning cases as well.
Deutsch
-------
Backend und Symbologien:
* Das eingebettete libzint geht von 2.4.4 auf 2.16.0. Die Tcl-Seite
erreicht 106 Symbologien statt bisher 84, darunter neu DotCode, Han Xin, Ultracode, rMQR, BC412, DX Film Edge, Royal Mail Mailmark in der 2D- und
der 4-State-Form, UPU S10, DPD, VIN, CEPNet sowie EAN-8 und EAN-13 als eigene Namen samt ihrer Composite-Varianten.
* Namen und Werte stehen jetzt in einer Tabelle statt in zwei parallelen Feldern. Erst das erlaubte es, die zweiundzwanzig Einträge einzufügen, ohne dass beide auseinanderlaufen.
Ausgabe:
* Das Kommando "file" schreibt BMP, GIF, PCX, PNG, TIF, EMF, EPS und
SVG, gewählt über die Dateiendung. Zuvor gab es nur PNG, EPS und SVG.
* EPS und SVG stammen nicht mehr aus den beiden gepatchten Kopien des 2.4.4-Ausgabecodes, die tzint seit 2014 mitführte. Sie kommen vom
aktuellen libzint über dessen Ausgabe in den Speicher und folgen damit künftig dem Backend.
* -vectorscale erhält die Größe, die die Vektorausgabe in tzint immer hatte. libzint selbst zeichnet doppelt so groß; "-vectorscale zint"
wählt das und trifft damit genau die Größe der Rasterausgabe.
Neue Optionen:
* -eci wählt die Extended Channel Interpretation, 26 ist UTF-8, 3 ist
ISO 8859-1. Ein EPC-QR-Code für eine Überweisung braucht das: seine
Daten nennen den eigenen Zeichensatz, und ohne die Option wählt libzint selbst einen.
* -dpi und -dpmm setzen die Auflösung, die in BMP, EMF, PCX, PNG und TIF vermerkt wird.
* Farben nehmen neben den sechs Hexziffern von RRGGBB auch acht als RRGGBBAA, ein durchsichtiger Hintergrund ist damit erreichbar.
Fehlerbehebungen:
* Eine Warnung von libzint verwirft das Ergebnis nicht mehr. libzint antwortet mit 1 bis 4, wenn es das Symbol erzeugt hat und etwas
anzumerken hat; tzint behandelte jede Antwort ungleich 0 als Fehlschlag
— die genannte Variable blieb leer, ohne dass ein Fehler ausgelöst
wurde. Ein einzelnes Eurozeichen in der Eingabe genügte dafür, womit GiroCode-Daten still fehlschlugen. Ab Status 5 wird weiterhin nichts geliefert.
* Farben werden auf Hexziffern geprüft. "-fg zzz" ging zuvor als
Kurzform durch und wurde erst von libzint mit einem Statuscode abgelehnt statt mit einer Meldung.
* Die drei Compiler-Warnungen der Erweiterung sind beseitigt.
Nicht abwärtskompatible Änderungen:
* EPS und SVG kommen vom aktuellen libzint und gleichen der Ausgabe der gepatchten Dateien nicht mehr Byte für Byte: ein Pfad statt vieler Rechtecke, eine andere Schrift für die Klartextzeile und bei großen Skalierungen rund ein Prozent Unterschied in der Höhe. Die Breiten sind unverändert.
* Eine Datei mit der Endung .txt enthält jetzt einen Hexdump der
kodierten Daten, wo libzint 2.4.4 die Modulmatrix als lesbare Zeilen aus
0 und 1 schrieb. Für eine Modulmatrix dient das Kommando "bits".
* Aufrufer, die jede Antwort ungleich 0 als Fehlschlag behandelten,
erhalten in den Warnungsfällen nun zusätzlich ein Symbol.
| Sysop: | DaiTengu |
|---|---|
| Location: | Appleton, WI |
| Users: | 1,142 |
| Nodes: | 10 (0 / 10) |
| Uptime: | 92:10:03 |
| Calls: | 14,704 |
| Calls today: | 2 |
| Files: | 186,497 |
| D/L today: |
2,083 files (617M bytes) |
| Messages: | 2,551,639 |