Format catalogue¶
This page is the map of what Sythos Barcode Universal can actually do at the current checkout. The important word is actually: a format name is not a promise that every variant, transport mode or camera condition is supported. The runtime registry and the format-specific notes below keep those boundaries visible.
Read and write are different capabilities¶
listFormats() is the release-facing capability registry. It reports one
entry per format with an identifier, a human label, a kind, and independent
canWrite and canRead flags:
import { listFormats } from '@sythos/js_barcode_universal';
const formats = listFormats();
for (const format of formats) {
console.log(
`${format.id}: ${format.kind}, ` +
`write=${format.canWrite}, read=${format.canRead}`,
);
}
At this checkout the registry returns 28 entries: all 28 are writable and
27 are readable. Pharmacode is intentionally the only canRead: false entry.
EAN-2 and EAN-5 report canRead: true, but each also carries
role: 'supplement'; their image path is valid only when a validated EAN/UPC
parent is present. Do not turn those flags into a claim that a supplement is a
standalone generic symbol.
The registry is generated by the public root implementation in
src/index.js, with the TypeScript source and declarations
in src/ts/index.ts and
src/index.d.ts. If this page ever disagrees with the
runtime registry, the runtime behavior wins and the documentation should be
corrected in the same change.
The current families¶
| Family | Runtime IDs | Write | Read | Main boundary |
|---|---|---|---|---|
| Linear 1D | ean13, ean8, upca, upce, isbn, code128, gs1128, code39, code93, itf, itf14, codabar, code11, msi, pharmacode |
15 | 14 | Pharmacode is writer-only in the generic image pipeline. |
| EAN/UPC supplements | ean2, ean5 |
2 | 2* | * means parent-bound, not standalone reading. |
| QR family | qr, microqr, rmqr |
3 | 3 | These are related families with different geometry and feature sets. |
| Data Matrix | datamatrix |
1 | 1 | Classic ECC 200 square and rectangular symbols; DMRE is outside scope. |
| Aztec family | aztec, aztecrune |
2 | 2 | Aztec Code and Aztec Rune are separate grammars. |
| PDF417 family | pdf417, compactpdf417, micropdf417 |
3 | 3 | Full, truncated and Micro geometry are not aliases. |
| Project profile | frameqr |
1 | 1 | Sythos Canvas QR is not DENSO FrameQR compatibility. |
| GS1 DataBar | gs1databar14 |
1 | 1 | Physical support is Omnidirectional and Truncated only. |
Use the family pages for payload modes, options, image-reading limits and examples:
- Linear 1D formats
- QR family
- Data Matrix ECC 200
- Aztec family
- PDF417 family
- GS1, EAN and UPC
- Sythos Canvas QR profile
- Excluded and intentionally out-of-scope formats
The common pipeline¶
The root API keeps the three operations explicit:
import {
decode,
encode,
toImageData,
} from '@sythos/js_barcode_universal';
const matrix = encode('FORMAT-CATALOGUE', { format: 'qr', ecc: 'M' });
const image = toImageData(matrix, { scale: 8, margin: 4 });
const results = decode(image, { formats: ['qr'] });
if (results.length > 0) {
console.log(results[0].format, results[0].text);
}
encode() returns a BitMatrix, not a DOM element and not a pixel buffer.
Render it with toSVG, toPNG, toImageData or toCanvas before passing an
image to decode(). The reader accepts an RGBA object with data, width and
height, so browser canvas code, a Worker, and a Node adapter can share the
same boundary without a runtime image dependency.
An empty result is a normal, useful result: it means the requested image did not produce a validated symbol. The decoder is deliberately conservative. A partial payload, a failed checksum, an ambiguous detector result or a symbol outside the requested format set must not be promoted to application data.
Camera profile and orientation scope¶
For supported detectors, the camera profile retries the fixed in-plane
orientations 0°, 45°, 90°, 135°, 180°, 225°, 270° and 315°.
This is a finite rotation retry policy, not a claim of arbitrary perspective,
curved-media or severe-occlusion support. Quiet zones, enough module detail,
good contrast and a coherent input frame still matter.
The precise boundary is format-specific. QR, Data Matrix, Aztec, Micro QR, rMQR, Frame QR profile, Aztec Rune and the PDF417-family readers do not all share the same detector geometry or photographic tolerance. Read the family page instead of assuming that a successful clean-matrix decode guarantees a successful camera decode.
How to choose a format¶
| Requirement | Start with | Why |
|---|---|---|
| General-purpose square 2D payload | qr |
Mature Model 2 geometry with L/M/Q/H error correction and automatic version selection. |
| Small payload and very small symbol | microqr |
M1–M4 family with deliberately smaller capacity and a narrower feature scope. |
| Rectangular installation area | rmqr |
32 fixed rectangular geometries with M/H error correction. |
| Industrial square/rectangular marking | datamatrix |
ECC 200 with classic square and rectangular symbol sizes. |
| High-density 2D payload or stacked rows | pdf417 |
Text, Byte and Numeric compaction with ECC levels 0–8. |
| Small PDF417-shaped symbol | micropdf417 |
Fixed MicroPDF417 variants and constrained geometry options. |
| Truncated PDF417 geometry | compactpdf417 |
Compact/truncated layout when full PDF417 row structure is unnecessary. |
| GS1 retail or logistics payload | gs1128, gs1databar14, or EAN/UPC |
Choose by the physical symbology and AI/application rules, not only by payload text. |
| Artwork inside a QR-like symbol | frameqr |
Use only for the Sythos Canvas QR profile; it is not native DENSO FrameQR. |
This catalogue does not grant a standard certification, patent opinion,
trademark clearance or interoperability guarantee. The repository records its
engineering and provenance boundaries in NOTICE.md, the
root LICENSE, and the individual files in
licenses/.
Verification boundary¶
The project uses table invariants, checksum and Reed–Solomon checks, local
round trips, clean/degraded image vectors and independent black-box tools where
recorded. A third-party implementation used for comparison is not a runtime
dependency and its source or tables are not shipped. The verification record
is in NOTICE.md; the remaining scope and deliberately
excluded formats are in PLAN.md.
The names in this page are descriptive format names. They do not mean that the SDK is endorsed, certified or produced by the standards body, vendor or mark owner associated with a symbology.