- From: Dominik Deák via GitHub <sysbot+gh@w3.org>
- Date: Fri, 17 May 2024 01:41:59 +0000
- To: public-design-tokens-log@w3.org
I think a good way to alleviate confusion is to look at what [ICC Standard](https://color.org/specification/ICC.1-2022-05.pdf) uses for terminology. In my opinion, it's good practice to follow convention used by _the_ authority on colour management and be consistent with their vocabulary.
When most people speak of "colour spaces", they probably actually meant Colour Profiles, which stipulates the following attributes:
* Colour Gamut - specifies the range of colours can be rendered by a device, or captured by a device, or a universal non-device specific colour range (such as sRGB, Display-P3, Rec.2020, etc).
* White Point - specifies the colour temperature of the brightest representable colour.
* Colour Space - specifies how the colour channels mathematically map the entire gamut range. Typically there are four main categories of this: 1.) trichromacity, such as RGB, CMY(K); 2.) colour opponents, such as L\*a\*b\*; and 3.) hue models, such as HSL, or HSV; and finally 4.) monochromacity, such as Y (luminance).
* Transfer Function - specifies how the numerical values of each individual colour component is encoded and stored in memory. For example, many colour profiles save colour components as non-linear values, dedicating more precision to darker tones, and less precision to lighter tones. Quite important for low-precision values (8-bits per channel).
Some special Colour Profiles do not have a Colour Gamut, nor do they use a particular Transfer Function (i.e. values are linear). Examples of this are CIEXYZ, CIELAB, and OKLAB, and they only specify a Colour Space, because they are gamut-independent absolute spaces.
So, if we were to follow ICC way of specifying properties, the following two attributes the should be present: the Colour Profile, and the Colour Space (if applicable). Using and modifying the aforementioned examples, my proposal would look like this:
```js
{
"my-token": {
"$type": "color",
"$value": {
"colorProfile": "display-p3",
"colorSpace": "hsl",
"channels": [0.1, 0.2, 0.3],
"alpha": 0.6
}
}
}
```
For profiles that have an absolute colour space, the `colorSpace` property can be omitted, as the space is implied by the `colorProfile` itself:
```js
{
"my-token": {
"$type": "color",
"$value": {
"colorProfile": "oklab",
"channels": [0.1, 0.2, 0.3],
"alpha": 0.6
}
}
}
```
--
GitHub Notification of comment by DominikDeak
Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/137#issuecomment-2116476326 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Friday, 17 May 2024 01:42:00 UTC