• ANNOUNCE: tzint 1.3 released

    From =?UTF-8?Q?Alexander_Sch=C3=B6pe?=@[email protected] 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 — 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.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Harald Oehlmann@[email protected] to comp.lang.tcl on Mon Aug 24 12:39:44 2026
    From Newsgroup: comp.lang.tcl

    THanks, great.
    I would have loved to join the two TCL interfaces into one.
    There was already work done to be compiled (or loaded) without Tk in the
    tcl binding of zint waiting for your input.

    Could we continue this effort?

    Thanks for all,
    Harald


    Am 14.08.2026 um 06:52 schrieb Alexander Schöpe:
    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.

    --- Synchronet 3.22a-Linux NewsLink 1.2