Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
01c9b38
Add barcode drawing API with the EAN/UPC symbology family
JimBobSquarePants Aug 26, 2026
5868386
Add the clean-room OCR-A font and the data layer symbologies
JimBobSquarePants Aug 27, 2026
b3403b7
Build the OCR fonts from the standards and fix the barcode text layout
JimBobSquarePants Aug 28, 2026
925fa56
Add Code 128 and normalize the OCR fonts to their standards
JimBobSquarePants Aug 29, 2026
11318fa
Cut the per placement allocations in the barcode emitter
JimBobSquarePants Aug 29, 2026
d970ceb
Keep one set of measuring options per font in the barcode emitter
JimBobSquarePants Aug 29, 2026
a254b11
Build the barcode encode path on the stack
JimBobSquarePants Aug 29, 2026
d923c0e
Add GS1-128
JimBobSquarePants Aug 29, 2026
9c1de08
Add EAN-14
JimBobSquarePants Aug 30, 2026
c5da5fe
Add SSCC-18
JimBobSquarePants Aug 30, 2026
9c71537
Add HIBC Code 128
JimBobSquarePants Aug 30, 2026
003e817
Split the GS1 and HIBC data layers out
JimBobSquarePants Aug 31, 2026
8e37b47
Point the font generator at the new font data location
JimBobSquarePants Aug 31, 2026
088d4dd
Write the generated font data into the library
JimBobSquarePants Aug 31, 2026
033b8b4
Add Code 39
JimBobSquarePants Aug 31, 2026
710d2b6
Add Code 39 Extended
JimBobSquarePants Aug 31, 2026
3004725
Add HIBC Code 39
JimBobSquarePants Aug 31, 2026
27e2b6b
Add PZN, and rewrite the barcode documentation to Simplified Technica…
JimBobSquarePants Aug 31, 2026
18a51ba
Add Code 32 and rework barcode text layout
JimBobSquarePants Aug 31, 2026
bf0b0b8
Add Code 93 and share the alphanumeric character set
JimBobSquarePants Sep 1, 2026
5562e6e
Add Code 93 Extended
JimBobSquarePants Sep 1, 2026
b2ec3b8
Add the 2 of 5 family and a shared check character mode
JimBobSquarePants Sep 3, 2026
6250937
Add the remaining linear and postal symbologies with a physical size …
JimBobSquarePants Sep 3, 2026
b387cf2
Merge branch 'main' into js/barcodes
JimBobSquarePants Oct 10, 2026
90c84e8
Add the stacked linear symbologies on a shared row model
JimBobSquarePants Oct 10, 2026
e7b3570
Update shared infrastructure and wrap lines over 160 characters
JimBobSquarePants Oct 12, 2026
7436768
Move shared barcode helpers to their owning types and align tests and…
JimBobSquarePants Oct 13, 2026
88251f8
Add the GS1 DataBar symbologies and the GS1 North American Coupon
JimBobSquarePants Oct 13, 2026
e1d3fb5
Add the PDF417 symbologies and calculate millimetre values in double …
JimBobSquarePants Oct 13, 2026
e968d18
Add the Data Matrix symbologies and their text, and encode barcodes a…
JimBobSquarePants Oct 15, 2026
7bc643d
Add the QR Code symbologies and move the X dimension to the encoded s…
JimBobSquarePants Oct 15, 2026
eaacb6c
Add the QR Code reference images
JimBobSquarePants Oct 15, 2026
c12501b
Add the Intelligent Mail package barcode
JimBobSquarePants Oct 15, 2026
365907a
Add the Aztec Code symbologies
JimBobSquarePants Oct 15, 2026
e26164b
Add the MaxiCode symbology and draw hexagonal symbols
JimBobSquarePants Oct 15, 2026
f787c32
Add the Code One symbology and apply the barcode code review
JimBobSquarePants Oct 16, 2026
4dadb88
Add the Han Xin Code symbology
JimBobSquarePants Oct 16, 2026
f5c4f58
Rewrite the barcode standards README as a list per symbology
JimBobSquarePants Oct 16, 2026
7fd9e04
Add the DotCode symbologies and make the barcode encoders idiomatic
JimBobSquarePants Oct 16, 2026
d7cd884
Add the Ultracode symbology and draw colour symbols
JimBobSquarePants Oct 16, 2026
2f38db1
Put the barcode text last in the drawing and measuring endpoints
JimBobSquarePants Oct 18, 2026
fee2986
Take the barcode text as ReadOnlySpan<char>
JimBobSquarePants Oct 18, 2026
6c0a7e2
Measure barcodes like text and add the composite symbology base
JimBobSquarePants Oct 18, 2026
9a5fae7
Store the test fonts as Git LFS pointers
JimBobSquarePants Oct 19, 2026
23acd77
Size barcodes to their specifications and clamp the X dimension
JimBobSquarePants Oct 20, 2026
3cd5675
Add the GS1 Composite symbologies
JimBobSquarePants Oct 20, 2026
13086f2
Review the barcode code and tests
JimBobSquarePants Oct 20, 2026
77ed3ea
Remove the reference implementation dumps from the barcode tests
JimBobSquarePants Oct 20, 2026
bdb3201
Test the Rectangular Micro QR version choice against ISO/IEC 23941 Ta…
JimBobSquarePants Oct 20, 2026
cd26e24
Test the HIBC MicroPDF417 check character and character set
JimBobSquarePants Oct 20, 2026
7d7404a
Test the Han Xin capacities and version choice against ISO/IEC 20830 …
JimBobSquarePants Oct 20, 2026
33269d3
Test the Telepen start code, stop code and bit patterns against the S…
JimBobSquarePants Oct 20, 2026
d1e37b0
Test the Codablock F quiet zones
JimBobSquarePants Oct 20, 2026
5c952f2
Encode ISO/IEC 8859-1 characters in Code 128 and Codablock F with FNC4
JimBobSquarePants Oct 20, 2026
e5a4bfd
Widen a PDF417 symbol until its maximum data fits
JimBobSquarePants Oct 20, 2026
5b76c33
Double a QR Code data percent sign in Alphanumeric mode only
JimBobSquarePants Oct 20, 2026
5d90f5b
Validate GS1 element strings as one whole symbol
JimBobSquarePants Oct 20, 2026
3319318
Review the specification audit fixes
JimBobSquarePants Oct 20, 2026
ee5d843
Keep the postal bar density in whole pixels
JimBobSquarePants Oct 20, 2026
31ab94c
Count the Data Matrix Macro character against the length limit
JimBobSquarePants Oct 20, 2026
e386977
Reject GS1-128 and ITF-14 bars under 5.08 mm
JimBobSquarePants Oct 20, 2026
5901ed4
Reject DataBar bar heights under the minimum symbol heights
JimBobSquarePants Oct 20, 2026
c6c5498
Clamp every bar height to the limits of its specification
JimBobSquarePants Oct 20, 2026
7261d37
Pass the X dimension limits of every specification
JimBobSquarePants Oct 20, 2026
da74266
Apply the dimension clauses of the ISO and EN symbology standards
JimBobSquarePants Oct 20, 2026
357f239
Apply the EN 12323 dimensions to Code 16K
JimBobSquarePants Oct 20, 2026
4291af5
Clamp the Telepen X dimension to the open system minimum
JimBobSquarePants Oct 20, 2026
047ebed
Draw the PZN nominal wide to narrow ratio of 2.5
JimBobSquarePants Oct 20, 2026
4579a03
Add the missing decode tests that the reader supports
JimBobSquarePants Oct 20, 2026
4ed2c22
Exclude the local barcode specifications folder from compilation
JimBobSquarePants Oct 20, 2026
0eb1337
Draw barcodes at 300 dpi with specification based default X dimensions
JimBobSquarePants Oct 20, 2026
d89f238
Fix barcode review findings and share duplicated encodation
JimBobSquarePants Oct 21, 2026
a15ac9f
Name the GS1 DataBar layout constants
JimBobSquarePants Oct 21, 2026
e18312d
Keep POSTNET and PLANET out of the four-state encoder
JimBobSquarePants Oct 21, 2026
00e2ba2
Name the EAN/UPC text positions
JimBobSquarePants Oct 21, 2026
44e84ab
Name the DotCode and Han Xin constants
JimBobSquarePants Oct 21, 2026
a61d35b
Name the GS1-128 Composite constants
JimBobSquarePants Oct 21, 2026
51e6500
Write the Japan Post citations in English
JimBobSquarePants Oct 21, 2026
93d43a4
Read the Code 49 ASCII chart from a table
JimBobSquarePants Oct 21, 2026
4d8f563
Derive the PosiCode B character widths from version A
JimBobSquarePants Oct 21, 2026
9a528c6
Store only the BC412 space widths
JimBobSquarePants Oct 21, 2026
124f633
Name the Han Xin block table layout
JimBobSquarePants Oct 21, 2026
46dc38e
Use int arithmetic in the MaxiCode code set search
JimBobSquarePants Oct 21, 2026
e1850d5
Hold the Aztec character values for ASCII only
JimBobSquarePants Oct 21, 2026
e1e73e1
Name the GS1 component character sets
JimBobSquarePants Oct 21, 2026
341a256
Read the MaxiCode finder rings as pairs
JimBobSquarePants Oct 21, 2026
7dbcc10
Convert DotCode binary groups with long arithmetic
JimBobSquarePants Oct 21, 2026
7c789fe
Write the constructors of eight symbologies
JimBobSquarePants Oct 21, 2026
a75a74a
Cite the sections of the add-on, ISMN, check digit and Codabar rules
JimBobSquarePants Oct 21, 2026
b99f39b
Validate Code 39, Code 93, Code 11 and Codabar with one search
JimBobSquarePants Oct 21, 2026
95de9bb
Check the Data Matrix character range with one search
JimBobSquarePants Oct 21, 2026
a8e8130
Validate the DataBar Expanded Stacked segments in one place
JimBobSquarePants Oct 21, 2026
e0e2162
Join the HIBC 2D readable methods and use ValueStringBuilder
JimBobSquarePants Oct 21, 2026
21041d0
Calculate the emitter module width in BarcodeOptions
JimBobSquarePants Oct 21, 2026
55db402
Place barcode text lines from BarcodeTextPlacement
JimBobSquarePants Oct 21, 2026
e8e58aa
Give the postal space in modules, not run units
JimBobSquarePants Oct 21, 2026
4ad2654
Store the Australia Post encoding tables as base 4 values
JimBobSquarePants Oct 21, 2026
135aa5e
Hold the Mailmark barcode C and L differences in one layout
JimBobSquarePants Oct 21, 2026
70b3010
Remove two checks of conditions the callers already hold
JimBobSquarePants Oct 21, 2026
fdb178c
Encode the Swiss QR data with the runtime UTF-8 encoder
JimBobSquarePants Oct 21, 2026
9842ab6
Take the composite Byte Compaction arithmetic from Pdf417Codewords
JimBobSquarePants Oct 21, 2026
91fd6f3
Read the CC-A sizes through the MicroPDF417 size view
JimBobSquarePants Oct 21, 2026
656bfd6
Cite Annex J.2 for the QR Code mode change run lengths
JimBobSquarePants Oct 21, 2026
945832f
Add QR Code, DotCode, Aztec, DataBar Expanded Stacked and text cases …
JimBobSquarePants Oct 21, 2026
4019c38
Count the QR Code N2 and N4 penalties for all masks in one pass
JimBobSquarePants Oct 21, 2026
69b75ac
Remove the vendor manual citation from the Codabar wide element
JimBobSquarePants Oct 21, 2026
3da4b80
Target the CI frameworks in the font generator
JimBobSquarePants Oct 21, 2026
8653d28
Run the ARM CI jobs on Ubuntu 24.04
JimBobSquarePants Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = 160

##########################################
# File Extension Settings
Expand Down Expand Up @@ -134,6 +135,10 @@ csharp_style_prefer_null_check_over_type_check = true:warning
# C# Style Rules
# https://docs.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/language-rules#c-style-rules
[*.{cs,csx,cake}]
# Report lines exceeding the shared editor limit during analysis and builds.
roslynator_max_line_length = 160
dotnet_diagnostic.RCS0056.severity = warning

# 'var' preferences
csharp_style_var_for_built_in_types = false:error
csharp_style_var_when_type_is_apparent = false:error
Expand Down
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@
*.avif filter=lfs diff=lfs merge=lfs -text
*.hvc1 filter=lfs diff=lfs merge=lfs -text
*.hvcc filter=lfs diff=lfs merge=lfs -text
*.ivf filter=lfs diff=lfs merge=lfs -text
*.y4m filter=lfs diff=lfs merge=lfs -text
*.yuv filter=lfs diff=lfs merge=lfs -text
*.bit filter=lfs diff=lfs merge=lfs -text
###############################################################################
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ jobs:
sdk-preview: true
runtime: -x64
codecov: false
- os: ubuntu-22.04-arm
- os: ubuntu-24.04-arm
framework: net11.0
sdk: 11.0.x
sdk-preview: true
Expand All @@ -103,7 +103,7 @@ jobs:
sdk: 10.0.x
runtime: -x64
codecov: false
- os: ubuntu-22.04-arm
- os: ubuntu-24.04-arm
framework: net10.0
sdk: 10.0.x
runtime: -x64
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -234,3 +234,7 @@ SixLabors.Shapes.Coverage.xml
/plans/

samples/Avalonia**

# Specifications are licensed documents and stay on the local machine only.
/src/ImageSharp.Drawing/Barcodes/specs/
/src/ImageSharp.Drawing.FontGenerator/specs/
32 changes: 17 additions & 15 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ These instructions apply to the entire repository. More-specific `AGENTS.md` fil

## Working Practices

- Inspect the relevant implementation, tests, benchmarks, project files, and nearby code before proposing or making changes. Do not infer current behavior when the source is available.
- Inspect only the source and supporting files needed for the task before proposing or making changes. Do not infer current behavior when the source is available.
- Make the smallest complete change that solves the requested problem. Avoid unrelated cleanup, speculative abstractions, and formatting churn.
- Match established architecture, naming, formatting, documentation, and test patterns. Treat `.editorconfig`, analyzers, and repository build settings as authoritative.
- Trace the existing execution path before changing it. Extend and optimize the existing implementation within the requested behavior and affected path.
- Before implementing an operation, find and inspect the existing APIs that provide it. Use or extend those APIs instead of writing equivalent logic elsewhere. This includes color conversion, pixel conversion, memory management, and vectorized operations. If an API lacks required behavior, improve its owning implementation rather than bypassing it with a separate implementation.
- Follow existing naming, formatting, documentation, and test patterns. Treat `.editorconfig`, analyzers, and repository build settings as authoritative.
- Use simple technical English in all communication, documentation, and comments. Use short sentences, active voice, and existing code terminology.
- Preserve public API and observable behavior unless the task explicitly requires a change. Public API documentation must describe observable behavior, not implementation details.
- Do not use reflection against built assemblies, ad hoc assembly loading, or temporary probe projects unless explicitly requested.
- Build .NET projects in Release configuration unless explicitly instructed otherwise.
Expand All @@ -15,27 +18,26 @@ These instructions apply to the entire repository. More-specific `AGENTS.md` fil

- Treat throughput, latency, memory use, and binary size as design constraints, especially in pixel-processing, drawing, parsing, encoding, and other hot paths.
- Avoid unnecessary allocations, copies, boxing, closures, interface dispatch, repeated enumeration, and extra passes over data.
- Reuse the repository's existing memory ownership, pooling, span, vectorization, and parallelization patterns. Do not introduce a new mechanism when an established one fits.
- Keep hot loops simple and bounds-check-friendly. Hoist invariant work, preserve locality, and use the narrowest suitable data types without sacrificing correctness.
- Do not trade correctness or maintainability for assumed speed. Support non-obvious optimizations with measurements or clear evidence, and add or update benchmarks when performance is the purpose of the change.
- Reuse existing memory ownership, pooling, span, vectorization, and parallelization mechanisms.
- Use a SIMD-first design for suitable data processing code. Build on existing vectorized operations, dispatch mechanisms, and scalar fallbacks. Keep hot loops simple, hoist invariant work, and preserve memory locality.
- Preserve correctness and maintainability during optimization. Distinguish source-based reasoning from measured results. Claim a speedup only with measurements. Use existing benchmarks first. Add or update cases only when they measure relevant behavior that existing benchmarks miss.
- Consider all supported target frameworks and runtime capabilities. Do not regress fallback paths while optimizing newer runtimes.

## C# Conventions

- Follow the existing code around the change; local patterns take precedence over generic preferences.
- Follow local patterns when they comply with the explicit rules.
- Do not use `record` or `record struct` types.
- Prefer established invariants over redundant guards. Validate at real external boundaries and do not add defensive checks for internally controlled states.
- Do not extract single-use helpers merely to name a block. Extract only for genuine reuse, an established local pattern, or meaningful complexity reduction.
- Do not extract single-use helpers merely to name a block. Extract only for genuine reuse, an established local pattern, or independently complex logic.
- Add vertical whitespace after multi-line statements and declarations and between distinct logical stages. Never add trailing whitespace.
- Document every method, constructor, and property, regardless of whether it is public, internal, protected, or private. Keep public API documentation limited to observable behavior; use private and internal documentation to capture the contract and intent needed to maintain the code.
- Add inline comments throughout complex code. Explain algorithms, formulas, invariants, ownership, compatibility behavior, and performance tradeoffs at the operations and decisions they govern. Explain why the code is shaped that way rather than narrating the syntax.
- Document SIMD code especially thoroughly. Explain the vector layout, lane meaning, widening or narrowing, masks, shuffles, constants, alignment or remainder handling, supported instruction paths, scalar equivalence, and the reason each non-obvious operation is correct.
- Write algorithm and SIMD comments for a maintainer who is unfamiliar with the implementation. The reader should not need to reconstruct intent from external documentation, issue history, or benchmark results.
- Document every added method, constructor, and property, regardless of visibility. Update documentation when a member's behavior or contract changes. Keep public API documentation limited to observable behavior. Use private and internal documentation to explain the contract and intent.
- Add inline comments that explain why complex code works. Explain algorithms, formulas, invariants, memory ownership, compatibility behavior, and performance decisions where they apply.
- For SIMD, explain lane layouts, operations, alignment, remainders, and scalar equivalence so an unfamiliar maintainer can follow the code.

## Verification

- Add or update focused tests when behavior changes, following the test framework and conventions already used by the project.
- Never hack, weaken, skip, conditionally bypass, or otherwise manipulate a test to make it pass. Fix the production defect or the genuine test defect while preserving the test's intended coverage and sensitivity.
- Do not update golden files, reference images, snapshots, baselines, or expected-output artifacts to resolve a test failure. Treat a mismatch as evidence to investigate and correct the implementation.
- Run the narrowest relevant formatting, test, and Release build commands, then expand verification in proportion to the risk and scope of the change.
- Add or update tests only when they prove a required behavior or expose a real defect. Derive expectations from established contracts, explicit requirements, or defect evidence. Use source to identify contracts and integration points, not to copy implementation results into expectations. Prefer extending existing tests. Avoid redundant cases and assertions that merely repeat the implementation.
- Never weaken, skip, or bypass a valid test to make it pass. Fix the production defect or the genuine test defect. Replace or remove a test only with evidence that its expectation is invalid or its coverage is redundant.
- Do not update golden files, reference images, snapshots, baselines, or expected-output artifacts merely to silence a failure. Investigate mismatches. Update expected results only for an established requirement change or an incorrect reference result proved by independent contract or defect evidence.
- Test the actual behavior through the existing execution path. Synthetic inputs must exercise an established requirement or reproduce a real defect. Do not invent requirements or substitute internal structure and helper calls for assertions about required behavior. Run the narrowest relevant formatting, test, and Release build commands.
- Report what changed, the verification performed, and any remaining risks or unverified assumptions.
3 changes: 3 additions & 0 deletions ImageSharp.Drawing.All.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
<Project Path="src/ImageSharp.Drawing.WebGPU/ImageSharp.Drawing.WebGPU.csproj" />
<Project Path="src/ImageSharp.Drawing/ImageSharp.Drawing.csproj" />
</Folder>
<Folder Name="/tools/">
<Project Path="src/ImageSharp.Drawing.FontGenerator/ImageSharp.Drawing.FontGenerator.csproj" />
</Folder>
<Folder Name="/tests/">
<File Path="tests/Directory.Build.props" />
<File Path="tests/Directory.Build.targets" />
Expand Down
3 changes: 3 additions & 0 deletions ImageSharp.Drawing.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
<Project Path="tests/ImageSharp.Drawing.ManualBenchmarks/ImageSharp.Drawing.ManualBenchmarks.csproj" />
<Project Path="tests/ImageSharp.Drawing.Tests/ImageSharp.Drawing.Tests.csproj" />
</Folder>
<Folder Name="/tools/">
<Project Path="src/ImageSharp.Drawing.FontGenerator/ImageSharp.Drawing.FontGenerator.csproj" />
</Folder>
<Folder Name="/tests/Images/" />
<Folder Name="/tests/Images/Input/" />
<Folder Name="/tests/Images/Input/Bmp/">
Expand Down
21 changes: 14 additions & 7 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,23 @@

## Supported Versions

Six Labors provides security fixes only for the latest major version of each library.
Six Labors provides security updates for the latest major version of each library.

Older major versions are end-of-life and do not receive security fixes.
Each major version remains eligible for security updates for 12 months after the first stable release of the next major version of that library.
After this period, that major version is end-of-life and does not receive security updates.

Users must upgrade to the latest major version to receive security fixes.
Users must install the latest available patch or minor release within a supported major version to receive security fixes.
Older releases within that major version are not maintained separately.

| Version | Supported |
| -------------------- | --------- |
| Latest major version | Yes |
| Older major versions | No |
| Version | Supported |
| ------- | --------- |
| Latest major version | Yes |
| Superseded major version within 12 months of the next major's first stable release | Yes |
| Superseded major version after that 12-month period | No |

Security updates may require a license key under the existing license terms. This does not change the license terms.

This policy covers security fixes only. It does not include feature backports or extend support for underlying .NET versions.

Security fixes, if any, are provided at Six Labors' discretion.

Expand Down
74 changes: 74 additions & 0 deletions THIRD-PARTY-NOTICES
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,77 @@ MIT License. The full license texts are available in the Vello repository
LICENSE-APACHE and LICENSE-MIT files.

================================================================================

.NET Runtime (https://github.com/dotnet/runtime)
License: MIT

Portions of this software were developed with reference to the .NET runtime
project, including the pooled string and list building buffers.

Copyright (c) .NET Foundation and Contributors

The .NET runtime project is distributed under the MIT License. The full license
text is available in the .NET runtime repository LICENSE.TXT file.

================================================================================

Barcode Writer in Pure PostScript (https://github.com/bwipp/postscriptbarcode)
License: MIT

Portions of this software were developed with reference to the Barcode Writer
in Pure PostScript project, including barcode symbology encodation.

Copyright (c) 2004-2024 Terry Burton

Barcode Writer in Pure PostScript is distributed under the MIT License. The
full license text is available in the project repository LICENSE file.

================================================================================

bwip-js (https://github.com/metafloor/bwip-js)
License: MIT

Portions of this software were developed with reference to the bwip-js
project, including barcode symbology encodation.

Copyright (c) 2011-2026 Mark Warren

The bwip-js project is distributed under the MIT License. The full license text
is available in the bwip-js repository LICENSE file.

================================================================================

Zint (https://github.com/zint/zint)
License: BSD-3-Clause

Portions of this software were developed with reference to the Zint barcode
library backend, including barcode symbology encodation.

Copyright (C) 2008-2026 Robin Stuart and the Zint contributors

The Zint backend is distributed under the BSD 3-Clause License. The full
license text is available in the Zint repository LICENSE file.

The GS1 DataBar element width routine derives from the combins and getRSSwidths
functions of ISO/IEC 24724 Annex B, which the Zint backend carries with this
notice: "Copyright (C) 2006 BSI ... This does not preclude the free use, in the
course of implementing the standard, of necessary details such as symbols, and
size, type or grade designations."

================================================================================

GS1 Barcode Syntax Dictionary (https://github.com/gs1/gs1-syntax-dictionary)
License: Apache-2.0

Portions of this software incorporate the GS1 Barcode Syntax Dictionary and
were developed with reference to its Syntax Tests.

Copyright (c) 2020-2021 BWIPP project
Copyright (c) 2020-2021 Zint Project
Copyright (c) 2021-2026 GS1 AISBL

The GS1 Barcode Syntax Dictionary is distributed under the Apache License,
Version 2.0. The full license text is available in the gs1-syntax-dictionary
repository LICENSE file.

================================================================================
Loading
Loading