Repository navigation
v0.8.0
Pre-releasev0.8.0: automatic native-text fonts
This unstable minor release changes default native-text conversion behavior
since v0.7.0.
CLI and JavaScript native C8/HN-B conversions now use a built-in CAJViewer
7.3 Wine reference preset. Fonts, mode selection, glyph aliases, symbol and
ornament identities, and full-font embedding require no user configuration.
This intentionally changes the default PDF and distribution sizes. Native
binaries contain the 58.6 MiB uncompressed resource pack and work offline.
npm contains the same pack; Node reads it locally, while the browser downloads
it into a verified OPFS cache on first native-text conversion. The core and
raw WASM do not embed font programs. See bundled fonts.
Upgrade and breaking changes
cargo install --locked caj2pdf-cli --version 0.8.0
npm install caj2pdf-rust@0.8.0
caj2pdf paper.caj -o paper.pdf| Surface | Previous behavior | New behavior and migration |
|---|---|---|
| CLI | Discover installed fonts unless custom fonts are supplied. | Use the bundled mode-specific preset. No flags are needed. Use --no-bundled-fonts to restore installed-font discovery; add --no-system-fonts to disable both. |
| Node/browser | Callers supply native-text fonts and measured parameters. | convert(module, source, sink) selects the bundled preset. Explicit custom fonts retain their previous behavior; hnc8: { fonts: false } disables automatic fonts. |
| Output PDF | Default text rendering depends on caller/system fonts. | Default native-text PDFs use full original programs and measured mappings. Regenerate PDF hash/size expectations; full-font embedding increases PDF size. |
| Source builds | No bundled resource download is needed. | Install curl or set CAJ2PDF_FONT_PACK to the verified local pack for an offline build. |
| Browser deployment | Caller-provided fonts determine storage needs. | Serve the packaged font asset and use a secure context with OPFS and Web Locks. The first native-text conversion populates a verified cache; later conversions reuse it. |
Use matching JavaScript and WASM builds. Rust core and raw WASM remain
font-data-free; Rust callers can opt into bundled_fonts::configure with
ranged sources for the pinned pack. Existing explicit-font callers need no
new configuration. See bundled fonts for deployment
and override examples.
Validation and limits
No additional document profile is admitted. C8/HN-B outlines remain omitted;
existing codec, image-raster and unsupported-profile limitations remain.
The immutable font-data fonts-v1 release is a build input, separate from
the converter release. No external document corpus is distributed.
Validation: CLI, Node and Chromium each reproduce all 13 retained documents /
77 pages from the explicit Wine-reference configuration byte-for-byte. See
the receipt. This preserves
the prior Wine comparison and its remaining raster differences; it does not
claim universal pixel equivalence. The implementation checkpoint passes
1,470 Rust tests and 194 JavaScript tests, including real Chromium. Seven
ignored optional Rust corpus tests are excluded from compatibility passes.
The actual npm tarball and an extracted native archive were tested with
automatic fonts, and the Rust registry packages passed isolated build checks.
The tag workflow gates publication on the complete native/container inventory,
quality and packaged-artifact checks, and verification of artifact attestations.
Its run and uploaded SHA256SUMS are authoritative for released bytes.
It publishes core/CLI to crates.io and the tested JavaScript tarball to npm
after the GitHub release succeeds. Windows and macOS binaries are unsigned;
see build provenance for verification commands.