# Sources et notices

## CodeGlyphX — sous-ensemble d'encodage

Les moteurs Micro QR, Han Xin, DotCode, MaxiCode et les composants GS1 CC-A/B/C
sont adaptés du code C# de [CodeGlyphX](https://github.com/EvotecIT/CodeGlyphX/tree/3c9103da07623e15804450ec0bca284bfcbf4a2c),
commit `3c9103da07623e15804450ec0bca284bfcbf4a2c`.
Copyright CodeGlyphX authors and contributors. Licence Apache-2.0, texte intégral
dans [licenses/CodeGlyphX-APACHE-2.0.txt](licenses/CodeGlyphX-APACHE-2.0.txt).

Modifications : extraction de l'encodage seul (aucun décodeur, reconnaissance,
export bitmap ou service), adaptation des namespaces et des APIs aux géométries
locales, .NET Framework 4.8 et WASM ; réutilisation des moteurs Reed–Solomon,
PDF417 et du catalogue GS1 du projet. Les liaisons, séparateurs et alignements
composites sont adaptés des sources Zint citées ci-dessous ; Codablock F et les
profils Mailmark/NTIN/PPN utilisent BWIPP et les spécifications métier comme
références. Aucun package CodeGlyphX/Zint/ZXing/bwip-js n'est requis à l'exécution.
Les notices d'origine pertinentes sont conservées ci-dessous (pas les composants
sans rapport avec ce sous-ensemble).

## Zint barcode library backend

The rMQR, GS1 DataBar, MaxiCode, DotCode, Han Xin, and GS1 Composite implementations and conformance tests were developed with tables, algorithms, and interoperability vectors adapted from or checked against the Zint backend. CodeGlyphX has no runtime dependency on Zint.

- Copyright (c) 2008-2026 Robin Stuart and contributors
- Source commit: `4e534c3a0982ac9f284f5035181c7032fa9f8c8f`
- Source: <https://github.com/zint/zint>
- Backend license: BSD 3-Clause

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

## ZXing-C++

The MaxiCode module mapping and decoder and the GS1 DataBar Limited reference checks were developed with algorithms and tables adapted from or checked against ZXing-C++. CodeGlyphX has no runtime dependency on ZXing-C++.

- Copyright ZXing-C++ authors and contributors
- Source commit: `179be6ac9c1b2a75ff0017a237c6546fea3c7d12`
- Source: <https://github.com/zxing-cpp/zxing-cpp>
- License: Apache License 2.0


Les vecteurs supplémentaires sont régénérables par
`tests/reference/generate-additional-goldens.mjs`. Han Xin : seuls les douze
modules réservés correspondant aux bits de fonction 28–33 sont normalisés à zéro
selon ISO/IEC 20830:2021 et Zint ; BWIPP conserve l'ancien motif alterné. Ni données,
ni correction, ni masques ne sont modifiés par cette normalisation. Les rangées
répétées des symboles empilés sont réduites pour comparer leur contenu ; leurs
largeurs et hauteurs physiques sont vérifiées séparément.

Références consultées le 7 octobre 2026. Aucun binaire, package ni moteur de ces
projets n'est une dépendance d'exécution ou de compilation de la bibliothèque.
L'algorithme d'optimisation C# et son oracle de test sont écrits pour ce projet.

## Spécifications et références d'encodage

- Code 128 : ISO/IEC 15417 ; Code 39 : ISO/IEC 16388 ; ITF : ISO/IEC 16390.
- [GS1 General Specifications](https://ref.gs1.org/standards/genspecs/) :
  GS1-128, EAN/UPC, identifiants, contrôles et quiet zones.
  Les écarts de suppléments EAN (7–12) / UPC (9–12) sont également vérifiés dans
  [la version 24.0, figure 5.2.3.4-1](https://ref.gs1.org/standards/genspecs/24.0.0/).
- [BWIPP](https://github.com/bwipp/postscriptbarcode/tree/d1c68203f2f703de57c55ac1a7d3f8e980fdb712/src),
  commit `d1c68203f2f703de57c55ac1a7d3f8e980fdb712` : `code128.ps.src`,
  `code39.ps.src`, `interleaved2of5.ps.src`, `ean13.ps.src`.
  Tables utilisées comme référence/cross-check, avec attribution ci-dessous.
  Extension linéaire : `code11.ps.src`, `code93.ps.src`, `code39ext.ps.src`,
  `msi.ps.src`, `pharmacode.ps.src`, `pharmacode2.ps.src`, `telepen.ps.src`,
  `flattermarken.ps.src`, `upce.ps.src`, `ean2.ps.src` et `ean5.ps.src`, au même
  commit. Tables et descriptions servent de références ; aucun moteur PostScript
  ni exécutable BWIPP n'est incorporé.
- [GS1 Syntax Dictionary](https://github.com/gs1/gs1-syntax-dictionary/blob/c63d8a12210dd0cfaceac4aae45ccf57b48eb15b/gs1-syntax-dictionary.txt),
  commit `c63d8a12210dd0cfaceac4aae45ccf57b48eb15b` : métadonnées des AI,
  allocations des familles, longueurs et règles de séparation.
- [GS1 Syntax Engine](https://github.com/gs1/gs1-syntax-engine/tree/70c1b162812ef8964cf8d4f28507a1b699cb934f/src/c-lib/syntax),
  commit `70c1b162812ef8964cf8d4f28507a1b699cb934f` : référence pour CSET 82 et
  validation des dates. Aucun code C ni moteur de syntaxe n'est incorporé.
- [Interop .NET WebAssembly](https://learn.microsoft.com/en-us/aspnet/core/client-side/dotnet-interop/wasm-browser-app?view=aspnetcore-10.0).
- [Project Nayuki QR Code generator](https://github.com/nayuki/QR-Code-generator/tree/3c6d0b3cefb4e049dc337e82237c9644399716a8),
  commit `3c6d0b3cefb4e049dc337e82237c9644399716a8` : tables de blocs QR Model 2,
  placement, BCH et calcul de pénalité adaptés en C#, sous licence MIT.
  Les empreintes de matrices sont produites par une exécution séparée du code
  Python de référence ; ce code n'est pas distribué ni requis par les tests.
- BWIPP au commit ci-dessus : `datamatrix.ps.src` et `pdf417.ps.src`, tables
  ECC200/DMRE, placement, trois clusters PDF417 et règles de compaction.
- BWIPP au même commit : `databaromni.ps.src`, `databarlimited.ps.src` et
  `databarexpanded.ps.src`, tables de groupes, poids de
  contrôle et finders DataBar ; règles de séparateurs Stacked/Stacked Omni
  adaptées en C#. Les caractères sont calculés par énumération de compositions
  bornées et vérifiés contre un oracle combinatoire distinct.
  Limited et Expanded utilisent un classement combinatoire par inclusion-exclusion ;
  compression, transitions et empilement Expanded sont adaptés en C# sous MIT.
- GS1 DataBar : ISO/IEC 24724 et GS1 General Specifications. Les vecteurs fixes
  sont régénérables par `tests/reference/generate-databar-goldens.mjs` ; l'oracle
  BWIPP reste facultatif et n'est pas incorporé à la bibliothèque ou au WASM.
- [bwip-js](https://github.com/metafloor/bwip-js/tree/4dcf6129ba4bcd7de760e7bd4e400bca11473ccf),
  commit `4dcf6129ba4bcd7de760e7bd4e400bca11473ccf`, moteur BWIPP 2026-05-28 :
  oracle de développement pour calculer des empreintes fixes de matrices.
  Les scripts facultatifs `tests/reference/generate-*-goldens.mjs` téléchargent
  et exécutent cette référence en mémoire, sans installation npm. Aucun moteur
  ni police bwip-js n'est ajouté au cœur, aux tests normaux ou au bundle WASM.
- [GS1 Digital Link URI Syntax 1.7.0](https://ref.gs1.org/standards/digital-link/uri-syntax/1.7.0/) :
  ordre des qualificatifs, structure des clés et attributs d'URI non compressées.

Empreinte SHA-256 de la liste indépendante BWIPP des 107 patterns Code128,
concaténés avec `|` et encodés en UTF-8 :
`353AFBD5059EA274CB2E1888554B81F3C7148088795147F19E6930FD6BE9AEDB`.
La suite contrôle cette empreinte et les dimensions de chaque pattern.

Autres empreintes indépendantes, avec le même séparateur `|` : Code 39 (44
patterns à 9 éléments sans gap intercaractère)
`EA3D8B7E461AE5F49869F1AC1D1893F7C9ACCA3D7F69FAD4BB016879A668AFC0` ;
ITF (10 patterns de chiffres, largeur large 2 de BWIPP convertie en rapport 3)
`151D81F7F9A1131FBF465E8D0C1A7809FC49604103F99F42A7F0B9CFB38027D2`.

Empreintes supplémentaires, toujours jointes par `|` en UTF-8 :

- Code11 (12 patterns incluant le gap de fin de symbole) :
  `B3441C7E5CD21871FDE7FF3C0366CB461C8DEAACED5CCD645522DE0E53F0A60C`.
- Code93 (48 patterns, 47 symboles + start/stop sans la barre terminale) :
  `C7C3D6E6E3D86F080EE462E7C3848705B748E2474B1F81013C194A670EA1AD87`.
- Telepen Alpha (128 patterns ASCII) :
  `8EE1A63D4F86469F86DFA06FF8692065E5FDFA4390CAFCE8746BA859D986292D`.
- MSI (10 patterns numériques sans gardes) :
  `FCE971FF9991AC97B096071A5F76B080C97615EF1FFCABCC95B5E8FD4326C7B9`.
- Full ASCII Code39 (128 chaînes d'expansion) :
  `23ED004085974371B41B85A66607174BFCAF1EC837829AD7070D1BF8CEB53856`.

## BWIPP — notice de permission

Copyright (c) 2004-2026 Terry Burton.

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

## Références GS1

GS1 Syntax Dictionary : Copyright (c) 2020-2021 BWIPP project;
Copyright (c) 2020-2021 Zint Project; Copyright (c) 2021-2025 GS1 AISBL.
GS1 Syntax Engine : Copyright (c) 2022-2026 GS1 AISBL.
Ces ressources de référence sont publiées sous
[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
Les tables de métadonnées C# sont un sous-ensemble écrit pour cette bibliothèque,
pas une distribution du dictionnaire ou de l'implémentation GS1.

## Project Nayuki — notice de permission

Copyright (c) Project Nayuki. (MIT License)
https://www.nayuki.io/page/qr-code-generator-library

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
