Skip to content

[css-color-4] Minimum bit depth for serializing color() values. #5667

Closed
@svgeesus

Description

@svgeesus

As a first step, I said that 8 bits is the minimum for RGB and CMYK spaces. Much commercial software uses 8bits for CMYK, and the entire Web is on 8bit sRGB currently. The wider the gamut, the more bits are needed to avoid banding. If values are stored in linear-light you also need more bits compared to a gamma-encoded or L* encoded space (because the steps are unevenly distributed, perceptually).

But:

  • 10 bits is better for P3 and a98rgb, to have the same spacing as 8bit sRGB
  • 10 is suboptimal for 2020 but allowed; 12 is recommended, The Rec BT.2020 standard does not even allow 8, what should we do here
  • prophoto-rgb really needs 16 due to the superwide gamut

For all of these, 16bit unsigned integer or half float is a more reliable and realistic storage format. So can we increase the minimum? Need implementer input here.

(Color.js uses JavaScript number, i.e. double precision float, for component value storage and calculation).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions