Skip to content

v2.2.0 — Round-trip ΔE by lightness

Choose a tag to compare

@colourbill-ctrl colourbill-ctrl released this 20 Jul 21:09
· 9 commits to main since this release
v2.2.0
26a6909

Adds the round-trip error plot from the reference print-QC report, and makes a failure in one analysis stop costing you the whole page.

New: Round-trip ΔE by lightness

Under the ΔE histogram in Analysis → Profile Statistics, a scatter answering the question the summary figures cannot: where in the tone scale the B2A inversion struggles, and how far into the gamut the trouble reaches.

It samples 32 lightness levels. At each level it takes 64 points on the gamut boundary, then repeats them eroded toward the neutral axis at 80 %, 50 % and 20 % of their chroma — 8,192 points in all, plotted individually with dotted separators between levels.

Read it band by band. Inside a band the points run from the gamut surface on the left to neutral on the right, so the error should fall away across the band: colours near the boundary are hardest to invert, colours near neutral easiest. A band whose error stays high all the way to neutral is a profile in trouble at that lightness, and the tallest spikes mark the levels where the gamut boundary itself inverts worst.

Every seed is inside the gamut by construction, so this measures genuine B2A/A2B disagreement rather than colours being clipped for being unreachable.

Two things worth knowing before comparing numbers:

  • This plot has its own sampling, deliberately weighted toward the gamut boundary where inversion is hardest. Its mean and maximum are therefore higher than — and not comparable with — the table above it. It follows the rendering intent, but not the round-trip type.
  • The lightness range is derived from the inkset (halfway between paper white and Yellow, down to halfway between the media black point and Blue), matching the reference method. It deliberately excludes the deepest shadows, where the gamut has collapsed to a sliver and the errors describe the sliver rather than the profile.

The parts that depend on knowing which channel is which ink are CMYK/CMY only; other profiles fall back to the raw gamut extent, and a profile without a matching AToB/BToA pair simply doesn't get the plot.

More robust

The Analysis tab is now fault-isolated. It runs several independent analyses over untrusted profile data through a WebAssembly engine; previously an unexpected failure in any one of them could take down the whole page, leaving a blank browser tab with nothing to act on. A failure there is now contained to that tab and reported as a readable message, and clears when you load another profile.

Known limitations

  • The neutrality (Δa*b*) trace on the neutral axis is computed but still not shown — its definition remains under review.
  • Extrema Colorimetry and Ink Usage in Shadows remain CMYK/CMY only for the ink-specific parts.
  • Invert Transform remains hidden pending worker isolation.
  • ICC.2 (iccMAX) support is partial — no multi-part ICS workflows, no V5 sub-profile selection.
  • Float TIFF source decoding is still unsupported (float output works).