• ANNOUNCE: tzint 1.3 released

    From =?UTF-8?Q?Alexander_Sch=C3=B6pe?=@ete-sep@mxbo.de to comp.lang.tcl on Fri Aug 14 06:52:44 2026
    From Newsgroup: comp.lang.tcl

    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 rCo 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 rCo 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|nge einzuf|+gen,
    ohne dass beide auseinanderlaufen.

    Ausgabe:

    * Das Kommando "file" schreibt BMP, GIF, PCX, PNG, TIF, EMF, EPS und
    SVG, gew|nhlt |+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|nlt die Gr|||fe, die die Vektorausgabe in tzint immer hatte. libzint selbst zeichnet doppelt so gro|f; "-vectorscale zint"
    w|nhlt das und trifft damit genau die Gr|||fe der Rasterausgabe.

    Neue Optionen:

    * -eci w|nhlt die Extended Channel Interpretation, 26 ist UTF-8, 3 ist
    ISO 8859-1. Ein EPC-QR-Code f|+r eine |Lberweisung braucht das: seine
    Daten nennen den eigenen Zeichensatz, und ohne die Option w|nhlt 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
    rCo 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|nrtskompatible |anderungen:

    * 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|fen Skalierungen rund ein Prozent Unterschied in der H||he. Die Breiten sind unver|nndert.
    * Eine Datei mit der Endung .txt enth|nlt 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|nllen nun zus|ntzlich ein Symbol.
    --- Synchronet 3.22a-Linux NewsLink 1.2