Re: [csswg-drafts] [css-color-4] Channel clipping breaks author expectations, especially when using 'perceptually uniform' spaces (#9449)

OK, this is my attempt to summarize this thread...

**Key Question:**
What happens when authors specify out-of-gamut colors?

**Key Design Principle:** [Robustness](https://github.com/w3c/csswg-drafts/issues/9449#issuecomment-2010957450)
“_When an author defines colors that are outside the display gamut - however the author got there - browsers need a way to recover. How do we ensure that recovery is as resilient as possible across a web for everyone, on everything?_”

**Key Scenarios:**
* Authors specifies a color they _can_ see → How does it get displayed on a monitor that's _less_ capable than theirs?
* Author specifies a color they _cannot_ see → How does it get displayed on a monitor that's _more_ capable than theirs?

**Sources of out-of-gamut colors:**
* Manually adjusting parameters in over-wide coordinate systems like OKLab, or using a naive color picker.
* Computing color variations via relative color syntax and other color manipulation functions (e.g. to generate color palettes or render user-chosen color schemes).
* Interpolation between two in-gamut colors (e.g. for gradients/animations).
* Specifying colors from a wider gamut (e.g. p3) to be displayed on a narrower display (e.g. sub-sRGB).

**Considerations for specified→actual mapping**, [some of which conflict](https://github.com/w3c/csswg-drafts/issues/9449#issuecomment-1997443121):
* Maintaining lightness/luminsity and foreground/background contrast.
* Maintaining “colorfulness”.
* Maintaining hue accuracy.
* Color-matching images/`<canvas>`.
* Mapping algorithm performance.
* Future-compatibility with ever-widening display gamuts.
* Smooth interpolation.

**Questions for browser implementation teams:**
* What happens with images right now?
* What architectural or performance constraints are UAs operating under?

**Possible solutions currently under discussion:**
* Various gamut mapping algorithms with different output characteristics, including some with linear performance and some two-step algorithms with portions left to the UA.
* Adding a [color-gamut limit property](https://github.com/w3c/csswg-drafts/issues/10038) or function parameters that would compute specified colors to a particular gamut, ensuring 100% interoperable mapping for colors outside that gamut back into the specified gamut.
* Introducing additional color notations that range across intuitive color spaces while staying in-gamut for an identified gamut.

**Mapping Forward:**

I think the roadmap here is:
1. Make sure we _all_ understand the problems, the constraints, the use cases, and our design goals.
2. Articulate the options for solving this.
3. Get to consensus on which ones to pursue.
4. Bring back specific proposals for evaluation and adoption.


-- 
GitHub Notification of comment by fantasai
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/9449#issuecomment-2014015707 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Thursday, 21 March 2024 23:10:04 UTC