When rendering a CSS color such as our friend oklch(90% 90% 0deg) to a 2D canvas, what gamut should the color be mapped to?
It's not possible to map to the gamut of the display. Two reasons:
- The display is not knowable in general. E.g, an offscreen canvas, something being streamed to a video or saved as images, or there could be multiple displays.
- If the display is known, mapping to the gamut of the display is a potent fingerprinting vector.
It may be that the target of mapping should be the color space of the canvas. For the moment this is reasonable.
When we start supporting float16 canvases, it could be less obvious. E.g, an sRGB canvas with float16 pixels can express an arbitrarily wide gamut, so gamut mapping to sRGB would impose undesirable restrictions.
When rendering a CSS color such as our friend
oklch(90% 90% 0deg)to a 2D canvas, what gamut should the color be mapped to?It's not possible to map to the gamut of the display. Two reasons:
It may be that the target of mapping should be the color space of the canvas. For the moment this is reasonable.
When we start supporting float16 canvases, it could be less obvious. E.g, an sRGB canvas with float16 pixels can express an arbitrarily wide gamut, so gamut mapping to sRGB would impose undesirable restrictions.