Skip to content

Commit 8b71e72

Browse files
committed
[css-color-5] Defined serialization of origin colors, then used that definition for nested colors to use the most precision saving form. See w3c#10328
1 parent a7951fd commit 8b71e72

File tree

1 file changed

+122
-7
lines changed

1 file changed

+122
-7
lines changed

css-color-5/Overview.bs

Lines changed: 122 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3014,17 +3014,132 @@ is the same as that specified in
30143014
"color(srgb 0.8816 0.7545 0.4988)".
30153015
</div>
30163016

3017+
<h3 id="serial-origin-color">
3018+
Serializing Origin Colors
3019+
</h3>
3020+
3021+
The serialization of a the declared value of a color
3022+
used as the [=origin color=] inside of another color function
3023+
as components of a declared value is:
3024+
3025+
1. For ''rgb()'', ''rgba()'', ''hsl()'', ''hsla()''
3026+
3027+
- the string identifying the canonical color function,
3028+
"rgb" for ''rgb()'' and ''rgba()'',
3029+
"hsl" for ''hsl()'' and ''hsla()'',
3030+
in all-lowercase,
3031+
followed by "(",
3032+
followed by a space separated list of the non-alpha components as specified
3033+
(numbers serializing as numbers,
3034+
percentages serializing as percentages,
3035+
angles serializing as canonicalized angles in degrees,
3036+
calc() serializing in its simplified form)
3037+
with no clamping applied,
3038+
followed by " / " and the alpha component as specified
3039+
(using the same rules as the color components)
3040+
if an alpha component is present,
3041+
followed by ")".
3042+
3043+
NOTE: the same serialization is used regardless of whether the modern or legacy syntax was used.
3044+
3045+
2. For ''hwb()'', ''lab()'', ''lch()'', ''oklab()'', ''oklch()''
3046+
3047+
- the string identifying the color function in all-lowercase,
3048+
followed by "(",
3049+
followed by a space separated list of the non-alpha components as specified
3050+
(numbers serializing as numbers,
3051+
percentages serializing as percentages,
3052+
angles serializing as canonicalized angles in degrees,
3053+
calc() serializing in its simplified form) with no clamping applied,
3054+
followed by " / " and the alpha component as specified
3055+
(using the same rules as the color components)
3056+
if an alpha component is present,
3057+
followed by ")".
3058+
3059+
3. For ''color()''
3060+
3061+
- the string "color("
3062+
followed by the canonical colorspace
3063+
("xyz-d65" for "xyz") in all-lowercase
3064+
followed by a space,
3065+
followed by a space separated list of the non-alpha components as specified
3066+
(numbers serializing as numbers,
3067+
percentages serializing as percentages,
3068+
angles serializing as canonicalized angles in degrees,
3069+
calc() serializing in its simplified form)
3070+
with no clamping applied,
3071+
followed by " / " and the alpha component as specified
3072+
(using the same rules as the color components)
3073+
if an alpha component is present,
3074+
followed by ")".
3075+
3076+
3077+
30173078
<h3 id="serial-relative-color">
30183079
Serializing Relative Color Functions
30193080
</h3>
30203081

3021-
The serialization of the declared value of a relative color function
3022-
is a string identifying the color function in all-lowercase,
3023-
followed by "(from ",
3024-
followed by the serialization of the declared value of the origin color,
3025-
followed by a single space,
3026-
followed by a singly-space-separated list of the arguments to the color function,
3027-
followed by ")".
3082+
The serialization of the declared value of a relative color is:
3083+
3084+
1. For ''rgb()'', ''rgba()'', ''hsl()'', ''hsla()''
3085+
3086+
- the string identifying the canonical color function,
3087+
"rgb" for ''rgb()'' and ''rgba()'',
3088+
"hsl" for ''hsl()'' and ''hsla()'',
3089+
in all-lowercase,
3090+
followed by "(from ",
3091+
followed by the <a href="#serial-origin-color">serialization of the origin color</a>
3092+
using the rules for serializing nested origin colors,
3093+
followed by a single space,
3094+
followed by a space separated list of the non-alpha channel arguments as specified
3095+
(identifiers serializing as identifiers,
3096+
numbers serializing as numbers,
3097+
percentages serializing as percentages,
3098+
angles serializing as canonicalized angles in degrees,
3099+
calc() serializing in its simplified form),
3100+
followed by " / " and the alpha component as specified
3101+
(using the same rules as the color channel arguments)
3102+
if an alpha component is present,
3103+
followed by ")".
3104+
3105+
2. For ''hwb()'', ''lab()'', ''lch()'', ''oklab()'', ''oklch()''
3106+
3107+
- the string identifying the color function in all-lowercase,
3108+
followed by "(from ",
3109+
followed by the <a href="#serial-origin-color">serialization of the origin color</a>
3110+
using the rules for serializing nested origin colors,
3111+
followed by a single space,
3112+
followed by a space separated list of the non-alpha channel arguments as specified
3113+
(identifiers serializing as identifiers,
3114+
numbers serializing as numbers,
3115+
percentages serializing as percentages,
3116+
angles serializing as canonicalized angles in degrees,
3117+
calc() serializing in its simplified form),
3118+
followed by " / " and the alpha component as specified
3119+
(using the same rules as the color channel arguments)
3120+
if an alpha component is present,
3121+
followed by ")".
3122+
3123+
3. For ''color()''
3124+
3125+
- the string "color(from ",
3126+
followed by the <a href="#serial-origin-color">serialization of the origin color</a>
3127+
using the rules for serializing nested origin colors,
3128+
followed by a single space,
3129+
followed by the canonical colorspace ("xyz-d65" for "xyz")
3130+
in all-lowercase,
3131+
followed by a single space,
3132+
followed by space separated list of the non-alpha channel arguments as specified
3133+
(identifiers serializing as identifiers,
3134+
numbers serializing as numbers,
3135+
percentages serializing as percentages,
3136+
angles serializing as canonicalized angles in degrees,
3137+
calc() serializing in its simplified form),
3138+
followed by " / " and the alpha component as specified
3139+
(using the same rules as the color channel arguments)
3140+
if an alpha component is present,
3141+
followed by ")".
3142+
30283143

30293144
<div class="example" id="ex-serial-rcs-specified-simple">
30303145
For example, the result of serializing the declared value

0 commit comments

Comments
 (0)