- From: Leonard Rosenthol <lrosenth@adobe.com>
- Date: Mon, 20 Aug 2012 13:14:45 -0700
- To: Rik Cabanier <cabanier@adobe.com>, "public-svg-wg@w3.org" <public-svg-wg@w3.org>
Please don't... Trying to introduce Spot and/or DeviceN colourants into SVG (or the web in general) is just going to cause a nightmare of specification and implementation details - especially in transparency handling. I also think that there are various things in this SVG Color work that should also be "subset" to keep things simple and focused for screen-based viewing. Leonard -----Original Message----- From: Rik Cabanier Sent: Monday, August 20, 2012 3:51 PM To: Leonard Rosenthol; public-svg-wg@w3.org Subject: RE: svg2: merge in content from SVG Color I agree, this is great. Any chance that you can squeeze in spot colors? > -----Original Message----- > From: Leonard Rosenthol [mailto:lrosenth@adobe.com] > Sent: Monday, August 20, 2012 12:08 PM > To: public-svg-wg@w3.org > Subject: RE: svg2: merge in content from SVG Color > > This is all great stuff - but it's pretty useless unless you can get the rest of the > "HTML family of standards" to also adopt it. > > For example, if I have an image with an embedded ICC profile, it should > render exactly the same regardless of whether it is specified in HTML, CSS, > SVG, Canvas, etc...Right now, it's completely inconsistent. > > Any chance we could get the rest of the world to align with some/all of these > various color aspects. > > Leonard > > -----Original Message----- > From: SVG Working Group repository [mailto:cam@mcc.id.au] > Sent: Monday, August 20, 2012 2:44 PM > To: public-svg-wg@w3.org > Subject: svg2: merge in content from SVG Color > > details: https://svgwg.org/hg/svg2/rev/2d7ac3e5d383 > branches: > changeset: 323:2d7ac3e5d383 > user: Chris Lilley <chris@w3.org> > date: Mon Aug 20 20:44:03 2012 +0200 > description: > merge in content from SVG Color > > diffstat: > > master/color.html | 754 ++++++++++++++++++++++++++++++++++++--- > ------- > master/refs.html | 5 + > master/style/default.css | 13 +- > 3 files changed, 603 insertions(+), 169 deletions(-) > > diffs (969 lines): > > diff --git a/master/color.html b/master/color.html > --- a/master/color.html > +++ b/master/color.html > @@ -59,36 +59,318 @@ > <th>Owner:</th> > <td>Chris (no action)</td> > </tr> > </table> > </div> > > > <h2 id="ColorIntroduction">Introduction</h2> > + > + <p>This introduction is non-normative</p> > + > + <p>Several properties used in SVG take a color specification. Also, > + external media such as images or video contain colors.</p> > > -<p class="issue"> > - This section should include an overall discussion of color in SVG as well as > links to all the places color > - is discussed in the specification: currentColor, SVG colors, etc. > -</p> > - > -<p>All SVG colors are specified in the sRGB color space -[<a > href="refs.html#ref-SRGB">SRGB</a>]. At a minimum, SVG user -agents shall > conform to the color behavior requirements specified in the -<a > href="http://www.w3.org/TR/2011/REC-CSS2- > 20110607/syndata.html#color-units">color units section</a> -defined in the > CSS 2.1 specification.</p> > +<p>All SVG colors used as property values include a fallback specified > +in the sRGB color space [<a href="refs.html#ref-SRGB">SRGB</a>]. </p> > > <p>Additionally, SVG content can specify an alternate color specification > using an ICC profile [<a href="refs.html#ref-ICC42">ICC42</a>] > -as described in <a href="painting.html#SpecifyingPaint">Specifying > paint</a>. > -If ICC-based colors are provided and the SVG user agent supports ICC color, > +<!-- check paint chapter for content that should be here, and move it -->. > +If ICC-based colors are provided, > then the ICC-based color takes precedence over the sRGB color > specification; -otherwise, the RGB fallback colors must be used. > -Note that, in this specification, color interpolation occurs in an RGB color > space even if an -ICC-based color specification is provided (see <a>'color- > interpolation'</a>).</p> > +otherwise, the sRGB fallback colors will be used. > +Note that, in this specification, by default color interpolation occurs > +in sRGB color space even if an ICC-based color specification is > +provided, but this can be changed (see > +<a>'color-interpolation'</a>).</p> > + > + <div class="ready-for-wider-review"> > + <h2 id="color-managed-images">Color-managed Images</h2> > + > + <p class="note"> > + New in SVG2.</p> > + > + <p>Implementations of SVG2 are required to color-manage all images. > + The embedded profile is used. If there is no embedded profile, sRGB is > + assumed, for RGB images.</p> > + > + <p class="issue">Define processing for untagged greyscale and CMYK > + images. Could be a default profile, or an 'explicitly undefined' with > + a warning to avoid untagged non-RGB images when authoring.</p> > + > + > + <div class="requirement" id="assert_taggedImages"> > + <p> > + If a referenced image contains color profile information, a > + Color-managed User Agent MUST use that profile to render the image > + </p> > + </div> > + > + <div class="requirement" id="assert_untaggedImages"> > + <p> > + If a referenced image contains no color profile information, a > + Color-managed User Agent MUST use the sRGB profile to render the > image > + </p> > + </div> > + > + > + <h2 id="Color_syntax">Color syntax</h2> > + > + > + <h3 id="sRGBcolor"> > + sRGB colors</h3> > + > + <p class="prop-value"><a href="#color"><color></a></p> > + > + <p>Example (these all represent the same color):</p> > + <div class="example"> > + <pre> > + <circle fill="rgb(205,133,63)"/> > + <circle fill="peru"/> > + <circle fill="rgb(80.392%, 52.157%, 24.706%)"/> > + <circle fill="#CD853F"/> > + <circle fill="hsl(30, 59%, 53%)"/></pre> > + </div> > + > + <p class="note"> > + Includes all syntactic forms supported by SVG 1.1, adds hsl() from [<a > href="refs.html#ref-CSS3COLOR">CSS3COLOR</a>].</p> > + <p class="note">See the CSS Color Module Level 3 specification for the > + definition of the color type. > + [<a href="refs.html#ref-CSS3COLOR">CSS3COLOR</a>]</p> > + > + <div class="requirement" id="assert_base_syntax"> > + <p>All the syntactic forms for an sRGB color, including the full set of > color keywords, shall be supported by an SVG2 User Agent.</p> > + </div> > + > + <p>The rendering requirements for sRGB colors are more strict than for > SVG 1.1 User Agents, > + where color management is optional.</p> > + <div class="requirement" id="assert_render_sRGB"> > + <p> > + When an sRGB color is used - because it is the sole color specification, > or in a > + permitted fallback situation - a conformant SVG2 User Agent > + shall render it in conformance with the ICC profile for sRGB, to obtain > the > + desired color appearance. > + </p> > + </div> > + > + <p class="issue"> > + Define 'permitted fallback situation' and link to it. > + </p> > + > + <h3 id="sRGBcoloralpha"> > + sRGB colors with alpha</h3> > + > + <p class="prop-value"><a href="#color">rgba(r, g, b, a)</a></p> > + > + <p>Example </p> > + <div class="example"> > + <pre> > + <circle fill="rgba(205,133,63, 0.5)"/></pre> > + </div> > + > + > + <p class="note"> > + New in SVG2, added from [<a > + href="refs.html#ref-CSS3COLOR">CSS3COLOR</a>].</p> > + > + <div class="requirement" id="assert_combine-alpha"> > + <p>When an sRGB color with alpha is used in a property value, an SVG2 > User Agent shall combine the alpha value with any separately specified alpha > value that applies to that property, by multiplying the alpha values > together.</p> > + </div> > + > + <p>Example (these render as the same color)</p> > + <div class="example"> > + <pre> > + <circle fill="rgba(205,133,63, 0.25)"/> > + <circle fill="rgba(205,133,63, 1.0)" fill-opacity="0.25"/> > + <circle fill="rgba(205,133,63, 0.5)" fill-opacity="0.5"/></pre> > +</div> > + > + > + <div class="requirement" id="assert_render_sRGB"> > + <p> > + When an sRGB color with alpha is used - because it is the sole color > specification, or in a > + permitted fallback situation - a conformant SVG2 User Agent > + shall render it in conformance with the ICC profile for sRGB, to obtain > the > + desired color appearance. > + </p> > + </div> > + > + <h3 id="icc-colors"> > + ICC colors</h3> > + > + <p class="prop-value"><a href="#fallback"><fallback></a> > + <a href="#icccolor"> icc-color(<name> > + [,<icccolorvalue>]*) </a></p> > + > + <p>Example:</p> > + <div class="example"> > + <pre> > + <style>@color-profile { > + name="acmecmyk" > + src="http://printers.example.com/acmecorp/model1234"} > + </style> > + <circle fill="#CD853F icc-color(acmecmyk, 0.11, 0.48, 0.83, > 0.00)"/></pre> > + </div> > + > + <p>Example:</p> > + <div class="example"> > + <pre> > + <color-profile name="acmecmyk" > href="http://printers.example.com/acmecorp/model1234"/> > + <circle fill="#CD853F icc-color(acmecmyk, 0.11, 0.48, 0.83, > 0.00)"/></pre> > + </div> > + > + <p class="note">Same syntax as SVG 1.1, increased conformance > + requirement.</p> > + > + <p>SVG2 uses the extended ICC color specification from SVG 1.1. > + In SVG 1.1, parsing the syntax was required but implementing the ICC > + colour itself was optional, as indicated by phrases such as "If > + ICC-based colors are provided and the SVG user agent supports ICC > + color, then...". An SVG 1.1 user agent which also conforms to this > + specification "supports ICC color" for the purposes of conforming to > + SVG 1.1.</p> > + > + <p> > + As with SVG Full 1.1, SVG Color content may specify color using an ICC > profile (see > + [<a href="#ref-ICC42">ICC42</a>]); an sRGB fallback must still be > provided. > + </p> > + > + <p>An SVG2 User Agent searches the color profile description database > for > + a <a href="#ColorProfileDescriptions">color profile description</a> > entry whose > + name descriptor matches <name> and uses the last matching entry > that is found; > + painting shall be done using the given ICC color, where the comma- > separated list > + (with optional white space) of <strong><icccolorvalue></strong>'s > is a set > + of ICC-profile-specific color values, expressed as <a > href="http://www.w3.org/TR/SVGMobile12/types.html#DataTypeNumber"> > + <number></a>s (see <a href="#icc-colors">ICC colors</a>). If no > match is > + found, then the fallback sRGB color is used. > + </p> > + > + <div class="requirement" id="assert_ICCColorPrecedence"> > + <p> > + If ICC-based colors are provided, an SVG2 User Agent > + MUST use the the ICC-based color in preference to the sRGB fallback > color, > + unless the ICC color profile cannot be used (is unavailable, malformed, > or uses an unsupported profile connection > + space).</p> > + </div> > + <div class="requirement" id="assert_useICC"> > + <p>When rendering, if both ICC and sRGB fallback colors are provided > and the referenced ICC profile can be used, a Color-managed User Agent > MUST render using the ICC color values, using the specified ICC profile as the > input profile.</p> > + </div> > + > + <h3 id="LAB">LAB color</h3> > + > + <p class="note"> > + New in SVG2.</p> > + > + <p class="prop-value"><a href="#fallback"><fallback></a> > + <a href="#cielabcolor">cielab(<Lightness>, <a> > <b>)</a> | <br /> > + <a href="#fallback"><fallback></a> > + <a href="#cielchabcolor">cielchab(<Lightness> <Chroma>, > <Hue> )</a> > + </p> > + > +<div class="example"> > + <pre> > + <circle fill="#CD853F cielab(62.253188, 23.950124, 48.410653)"/> > + <circle fill="#CD853F cielch(62.253188, 54.011108, 63.677091)"/> > +</pre> > + </div> > + > + > + <p>An SVG2User Agent directly uses the CIE LAB or CIE LCHab values, > where the comma-separated list > + (with optional white space) of <strong><icccolorvalue></strong>'s > is a set > + of Lightness, a and b or Lightness, Hue and Chroma values, expressed as > <a > href="http://www.w3.org/TR/SVGMobile12/types.html#DataTypeNumber"> > + <number></a>s. A color profile is not referenced in the SVG, > although profile-based implementations may > + choose to implement this by providing and using an LAB profile.</p> > + > + <p>The white point is D50, which is the whitepoint defined by the CIE > for CIELab profile connection space and the > + whitepoint used for image editors that provide LAB functionality. > + LAB measurements relative to a different whitepoint should be > + adapted to D50 to be used in SVG2; the linear Bradford chromatic > + adaptation transform [<a href="refs.html#ref-Bradford">BRADFORD</a>] > + is suggested for this.</p> > + > + <div class="requirement" id="assert_LABColorPrecedence"> > + <p> > + If LAB-based colors are provided, an SVG2 User Agent > + MUST use the the LAB-based color in preference to the sRGB fallback > color.</p> > + </div> > + <div class="requirement" id="assert_useLAB"> > + <p>When rendering, if both LAB and sRGB fallback colors are provided, a > Color-managed User Agent MUST render using the ICC color values, using > the specified ICC profile as the input profile.</p> > + </div> > + > + <p>A fallback sRGB color must still be provided, for > + non-colormanaged user agents.</p> > + > + <h3 id="named"> > + ICC named color</h3> > + > + <p class="note"> > + New in SVG2.</p> > + > + > + <p class="prop-value"><a href="#fallback"><fallback></a> > + <a href="#iccnamedcolor">icc-named-color(<name>, > + <namedColor>)</a></p> > + > + <p>Example:</p> > + <div class="example"> > + <pre > > + <color-profile name="FooColors" > href="http://swatches.example.com/Foo"/> > + <circle fill="#CD853F icc-color(FooColors, Sandy23C"/></pre> > + </div> > + > + <p> > + SVG Color introduces the ability to specify a color using a 'Named Color > Profile'. > + </p> > + <p>An SVG2 User Agent searches the color profile description database > for > + a <a href="#ColorProfileDescriptions">color profile description</a> > entry whose > + name descriptor matches <name> and uses the last matching entry > that is found; > + painting shall be done using the given ICC color, where namedColor is a > <a > href="http://www.w3.org/TR/SVGMobile12/types.html#DataTypeString"> > + <string></a> indicating the named color to use.</p> > + > + <p>ICC named color profiles provide a platform- and implementation- > neutral way > + to share a swatch of colors, or to use user-created names for > + colors.</p> > + > + <div class="requirement" id="assert_ICCNamedColorPrecedence"> > + <p> > + If ICC-based named colors are provided, a conformant SVG2 User > Agent > + MUST use the the ICC-based named color in preference to the sRGB > fallback > + color, unless the ICC named color profile is unavailable, malformed, or > uses a profile > + connection space other than CIE XYZ or CIE LAB.</p> > + </div> > + <div class="requirement" id="assert_useICCNamed"> > + <p> > + When an ICC named color is used, a conformant Color-managed User > Agent > + shall render it in conformance with the specified ICC profile to obtain > the > + desired color appearance.</p> > + </div> > + > + </div> > + > +<div class="ready-for-wider-review"> > + <h2 id="Unmanaged">Unmanaged colors</h2> > + <h3 id="#device"> > + Uncalibrated device color</h3> > + > + <p class="note"> > + New in SVG2.</p> > + > + <p class="prop-value"><a href="#fallback"><fallback></a> > + <a href="#devicegray">device-gray(<gray>) </a> | <br /> > + <a href="#fallback"><fallback></a> > + <a href="#devicergb">device-rgb(<red> <green> <blue>) > </a> | <br /> > + <a href="#fallback"><fallback></a> > + <a href="#devicecmyk">device-cmyk(<cyan> <magenta> > <yellow> > + <black>) </a> | <br /> > + <a href="#fallback"><fallback></a> > + <a href="#devicegray">device-nchannel(<number>+) </a> | </p> > + > + > + <div class="example"> > + <pre> > + <circle fill="#CD853F device-cmyk(0.11, 0.48, 0.83, > + 0.00)"/></pre> </div> > + > + <p> > + SVG2 introduces a method of specifying uncalibrated device colors. This > + is sometimes useful in print workflows, for example to produce patches > of known > + ink density used for quality control purposes. </p> > + > + <p>An SVG2 User Agent which supports the indicated class of output > device > + will pass the values through without color management. If the class of > output device > + (for example, cmyk) is not supported, then the fallback > + sRGB color is used. > + </p> > + <p> > + As these are uncalibrated, any interpolation or compositing occurs using > the fallback > + sRGB color value.</p> > + > +</div> > > <div class="ready-for-wider-review"> > <h2 id="ColorProperty">The effect of the <span > class="property">'color'</span> property</h2> > > <p class="note">See the CSS Color Module Level 3 specification for the > definition of <a>'color'</a>. > [<a href="refs.html#ref-CSS3COLOR">CSS3COLOR</a>]</p> > > @@ -133,49 +415,42 @@ svg { border: 1px solid #888; background > <p class="caption">The text and arrow in the SVG fragment are filled > with the same color as the inherited <a>'color'</a> property.</p> > </div> > </div> > </div> > > <h2 id="ColorProfileDescriptions">Color profile descriptions</h2> > > -<h3 id="ColorProfileDescriptionsOverview">Overview of color profile > descriptions</h3> > - > -<p>The <a href="http://www.color.org/">International Color - > Consortium</a> has established a standard, the ICC Profile -[<a > href="refs.html#ref-ICC42">ICC42</a>], for -documenting the color > characteristics of input and output -devices. Using these profiles, it is > possible to build a -transform and correct visual data for viewing on different > -devices.</p> > - > -<p>A <dfn id='color-profile-description'>color profile description</dfn> - > provides the bridge between an ICC profile and references to -that ICC > profile within SVG content. The color profile -description is added to the user > agent's list of known color -profiles and then used to select the relevant > profile. The -color profile description contains descriptors for the location - > of the color profile on the Web, a name to reference the -profile and > information about rendering intent.</p> > + <h3 id="ColorProfileDescriptionsOverview"> > + Overview of color profile descriptions</h3> <p> > + The <a href="http://www.color.org/">International Color > Consortium</a> has established > + a standard, the ICC Profile [<a href="http://www.color.org/ICC-1A_1999- > 04.PDF">ICC32</a>], > + for documenting the color characteristics of input and output devices. > Using these > + profiles, it is possible to build a transform and correct visual data for > viewing > + on different devices.</p> > + <p> > + A <span class="SVG-Term">color profile description</span> provides the > bridge between > + an ICC profile and references to that ICC profile within SVG content. The > color > + profile description is added to the user agent's list of known color profiles > and > + then used to select the relevant profile. The color profile description > contains > + descriptors for the location of the color profile on the Web, a name to > reference > + the profile and information about rendering intent.</p> > > <h3 id="ColorProfileAlternatives">Alternative ways of defining a color > profile description</h3> > > <p>Color profile descriptions can be specified in either of the following > ways:</p> > > <ul> > <li>a <a>'color-profile element'</a> element</li> > > - <li>an <em>@color-profile</em> rule within a CSS style sheet (only > - applicable for user agents which support using CSS to style the SVG > - content</li> > + <li>an <em>@color-profile</em> rule within a CSS style sheet </li> > </ul> > > -<p class="issue">The above used to reference CSS2. @color-profile was - > removed from the latest draft of css3-color, too.</p> > > <p>If a color profile with the same <em>name</em> value has been > identified by both a <a>'color-profile element'</a> element and > <em>@color-profile</em> rules within a CSS style sheet, then the user > agent shall first attempt to locate the profile by using the specifications in > the <em>@color-profile</em> rules first.</p> > > @@ -183,61 +458,61 @@ first.</p> > > <edit:with element='color-profile'> > > <edit:elementsummary name='color-profile'/> > > <div class="adef-list"> > <p><em>Attribute definitions:</em></p> > <dl> > - <dt id="ColorProfileElementHrefAttribute"><span > class="adef">xlink:href</span> = "<span > + <dt id="ColorProfileElementHrefAttribute"><span > + class="adef">href</span> = "<span > class="attr-value"><a > href="types.html#DataTypeIRI"><iri></a></span>"</dt> > <dd>The location of an ICC profile resource.<br /> > <span class="anim-target"><a > href="animate.html#Animatable">Animatable</a>: > - no.</span></dd> > - <dt id="ColorProfileElementLocalAttribute"><span > class="adef">local</span> = "<span > + no.</span> > + > + <dt id="ColorProfileElementLocalAttribute"><span > + class="adef">local</span> = sRGB | "<span > class="attr-value"><string></span>"</dt> > <dd>The unique ID for a locally stored color profile. > <string> is the profile's unique ID as specified by > <a href="http://www.color.org/">International Color > - Consortium</a>. If both the <a>'xlink:href'</a> and the <a>'local'</a> > - attributes are specified, > - then the user agent shall search the local system for the > - locally stored color profile first, and, if not available > - locally, then attempt to use the resource identified by the > - <a>'xlink:href'</a> attribute. (Note: > - Profile description fields do <em>not</em> represent a > - profile's unique ID. With current ICC proposals, the > - profile's unique ID is an MD5-encoded value within the > - profile header.)<br /> > + Consortium</a>. > + <div class="requirement" id="assert_sRGBCaseInsensitive"> > + When used in a style sheet, > + for consistency with <a > href="http://www.w3.org/TR/CSS2/grammar.html">CSS lexical > + scanning and parsing rules</a>, the keyword "sRGB" MUST be case- > insensitive. However, > + it is recommended that the mixed capitalization "sRGB" SHOULD be > used for consistency > + with common industry practice.</div> > + </dd> > + <div class="requirement" id="assert_localColorProfilesFirst"> > + If both the <a href="#ColorProfileElementHrefAttribute"><span > class="attr-name">href</span></a> > + and the <span class="attr-name">local</span> attributes are > specified, then the > + user agent MUST search the local system for the locally stored color > profile first, > + and, if not available locally, then attempt to use the resource > identified by the > + <a href="#ColorProfileElementHrefAttribute"><span class="attr- > name">href</span></a> > + attribute.</div> > + (Note: Profile description fields do <em>not</em> represent a > profile's unique ID. > + With current ICC proposals, the profile's unique ID is an MD5-encoded > value within > + the profile header.).<br /> > <span class="anim-target"><a > href="animate.html#Animatable">Animatable</a>: > no.</span></dd> > <dt id="ColorProfileElementNameAttribute"><span > class="adef">name</span> = "<span > class="attr-value"><identifier></span>"</dt> > <dd>The name which is used as the first parameter for <span > class="prop-value">icc-color</span> specifications within > <a>'fill'</a>, <a>'stroke'</a>, <a>'stop-color'</a>, > <a>'flood-color'</a> and <a>'lighting-color'</a> property > values to identify the color profile to use for the ICC > color specification and the name which can be the value of > the <a>'color-profile element'</a> property. Note > that if 'name' is not provided, it will be impossible > - to reference the given color profile description. The name > - "sRGB" is predefined; any color profile descriptions with > - <span class="attr-value"><identifier></span> set to "sRGB" > - will be ignored. For consistency with <a > - href="http://www.w3.org/TR/2011/REC-CSS2- > 20110607/grammar.html#scanner">CSS > - lexical scanning and parsing rules</a> > - ([<a href="refs.html#ref-CSS21">CSS21</a>], section G.2), the keyword > "sRGB" > - is case-insensitive; however, it is recommended that the > - mixed capitalization "sRGB" be used for consistency with > - common industry practice.<br /> > + to reference the given color profile description. > <span class="anim-target"><a > href="animate.html#Animatable">Animatable</a>: > no.</span></dd> > <dt id="ColorProfileElementRenderingIntentAttribute"><span > class="adef">rendering-intent</span> = "<span > class="attr-value">auto | perceptual | > relative-colorimetric | saturation | > absolute-colorimetric</span>"</dt> > <dd> > @@ -247,57 +522,111 @@ first.</p> > primarily to color profiles corresponding to CMYK color > spaces. The different options cause different methods to > be used for translating colors to the color gamut of the > target rendering device:</p> > <dl> > <dt><span class='prop-value'>auto</span></dt> > <dd>This is the default behavior. The user agent > determines the best intent based on the content type. > - For image content containing an embedded profile, it > - shall be assumed that the intent specified within the > - profile is the desired intent. Otherwise, the user > - agent shall use the current profile and force the > - intent, overriding any intent that might be stored in > - the profile itself.</dd> > + <div class="requirement" id="assert_renderingIntentAuto"> > + For image content containing an embedded profile, the User Agent > MUST use the intent > + specified within the profile. Otherwise, the user agent MUST use > the current profile > + and force the intent, overriding any intent that might be stored in > the profile > + itself. > + </div></dd> > <dt><span class='prop-value'>perceptual</span></dt> > - <dd>This method, often the preferred choice for images, > - preserves the relationship between colors. It attempts > - to maintain relative color values among the pixels as > - they are mapped to the target device gamut. Sometimes > - pixel values that were originally within the target > - device gamut are changed in order to avoid hue shifts > - and discontinuities and to preserve as much as possible > - the overall appearance of the scene.</dd> > + <dd> <p>This method is often the preferred choice for images, > especially when > + there are substantial differences between the source and > destination > + (such as a CRT display image reproduced on a reflection print). It > takes > + the colors of the source image and re-optimizes the appearance for > the > + destination medium using proprietary methods. This re-optimization > may > + result in colors within both the source and destination gamuts being > + changed, although perceptual transforms are supposed to maintain > the > + basic artistic intent of the original in the reproduction. They will not > + attempt to correct errors in the source image. > + </p> > + <p class="note">With v2 ICC profiles there is no specified > perceptual reference > + medium, which can cause interoperability problems. When v2 ICC > profiles > + are used it may be safer to use the media-relative colorimetric > + rendering intent with black point compensation, instead of the > perceptual > + rendering intent, unless the specific source and destination profiles > to > + be used have been checked to ensure the combination produces > the desired > + result. > + </p> > + <div class="requirement" id="assert_renderingIntentPerceptual"> > + This method SHOULD maintain relative color values among the > pixels as they are mapped > + to the target device gamut. This method MAY change pixel values > that were originally > + within the target device gamut, in order to avoid hue shifts and > discontinuities > + and to preserve as much as possible the overall appearance of the > scene. > + </div> > + </dd> > <dt><span class='prop-value'>saturation</span></dt> > - <dd>Preserves the relative saturation (chroma) values > - of the original pixels. Out of gamut colors are > - converted to colors that have the same saturation but > - fall just inside the gamut.</dd> > + <dd> <p>This option was created to preserve the relative > saturation (chroma) of > + the original, and to keep solid colors pure. However, it experienced > + interoperability problems like the perceptual intent, and as solid > color > + preservation is not amenable to a reference medium solution using > v4 > + profiles does not solve the problem. Use of this rendering intent is > <em>not > + recommended</em> unless the specific source and destination > profiles to be > + used have been checked to ensure the combination produces the > desired > + result. > + </p> > + <div class="requirement" id="assert_renderingIntentSaturation"> > + This option SHOULD preserve the relative saturation (chroma) > values of the original > + pixels. Out of gamut colors SHOULD be converted to colors that > have the same saturation > + but fall just inside the gamut. > + </div></dd> > <dt><span class='prop-value'>relative-colorimetric</span></dt> > - <dd>Leaves colors that fall inside the gamut unchanged. > - This method usually converts out of gamut colors to > - colors that have the same lightness but fall just > - inside the gamut.</dd> > + <dd> <p>Media-relative colorimetric > + is required to leave source colors that fall inside the destination > + medium gamut unchanged relative to the respective media white > points. > + Source colors that are out of the destination medium gamut are > mapped to > + colors on the gamut boundary using a variety of different > + methods.</p> > + > + <p>NOTE The media-relative colorimetric rendering intent is often > used with > + black point compensation, where the source medium black point is > mapped > + to the destination medium black point as well.</p> > + > + <div class="requirement" > id="assert_renderingIntentRelativeColorimetric"> > + This method MUST map the source white point to the desination > white point. > + If black point compensation is in use, the source black point MUST > also be mapped to the destination black point. > + Adaptation algorithms SHOULD be used to adjust for the change in > white point. Relative relationships of colors inside > + both source and destination gamuts SHOULD be preserved. > + Relative relationships of colors outside the destination gamut MAY > be changed. > + </div></dd> > <dt><span class='prop-value'>absolute-colorimetric</span></dt> > - <dd>Disables white point matching when converting > - colors. This option is generally not recommended.</dd> > + <dd><p>ICC-absolute colorimetric is > + required to leave source colors that fall inside the destination > medium > + gamut unchanged relative to the adopted white (a perfect reflecting > + diffuser). Source colors that are out of the destination medium > gamut > + are mapped to colors on the gamut boundary using a variety of > different > + methods. This method produces the most accurate color matching > of > + in-gamut colors, but will result in highlight clipping if the > + destination medium white point is lower than the source medium > white > + point. For this reason it is recommended for use <em>only</em> in > applications > + that need exact color matching and where highlight clipping is not a > + concern. > + </p> > + <div class="requirement" > id="assert_renderingIntentAbsoluteColorimetric"> > + This method MUST disable white point matching and black point > matching when converting colors. > + </div> > + In general, this option is not recommended.</dd> > </dl> > <br /> > <span class="anim-target"><a > href="animate.html#Animatable">Animatable</a>: no.</span> > </dd> > </dl> > </div> > - > + <p class="issue">Fallback behaviour needs to be specified, for when > + the requested rendering intent does not have a corresponding table in > + the profile; or when all rendering-intents are provided using the same > + table.</p> > </edit:with> > > <h3 id="ColorProfileAtRule">The CSS <strong>@color-profile</strong> > rule</h3> > > -<p>When the document is styled using CSS, the > +<p>When the document is styled using CSS, the CSS > <strong>@color-profile</strong> rule can be used to specify a color profile > description. The general form is:</p> > > <pre> > @color-profile { <color-profile-description> } </pre> > > <p>where the <color-profile-description> has the form:</p> @@ - > 449,97 +778,186 @@ child elements.</p> > </tr> > </table> > </dd> > </dl> > </div> > > <p>See the description for the <a>'color-profile/rendering-intent'</a> > attribute on the <a>'color-profile element'</a> element.</p> > - > -<h3 id="ColorProfile">The <span class="property">'color-profile'</span> > property</h3> > - > -<table class="propdef"> > - <tr> > - <th>Name:</th> > - <td><dfn id="ColorProfileProperty">color-profile</dfn></td> > - </tr> > - <tr> > - <th>Value:</th> > - <td>auto | sRGB | <a><identifier></a> | > <a><funciri></a></td> > - </tr> > - <tr> > - <th>Initial:</th> > - <td>none</td> > - </tr> > - <tr> > - <th>Applies to:</th> > - <td><a>'image'</a> elements that refer to raster images</td> > - </tr> > - <tr> > - <th>Inherited:</th> > - <td>yes</td> > - </tr> > - <tr> > - <th>Percentages:</th> > - <td>N/A</td> > - </tr> > - <tr> > - <th>Media:</th> > - <td>visual</td> > - </tr> > - <tr> > - <th>Computed value:</th> > - <td>as specified, but with <a><funciri></a> values made > absolute</td> > - </tr> > - <tr> > - <th><a>Animatable</a>:</th> > - <td>yes</td> > - </tr> > -</table> > - > -<dl> > - <dt><span class='prop-value'>auto</span></dt> > - <dd>This is the default behavior. All colors are presumed to > - be defined in the sRGB color space unless a more precise > - embedded profile is specified within content data. For images > - that do have a profile built into their data, that profile is > - used. For images that do not have a profile, the sRGB profile > - is used.</dd> > - > - <dt><span class='prop-value'>sRGB</span></dt> > - <dd> > - <p>The source profile is assumed to be sRGB. This differs > - from auto in that it overrides an embedded profile inside an > - image.</p> > - > - <p>For consistency with <a href="http://www.w3.org/TR/2011/REC- > CSS2-20110607/grammar.html#scanner">CSS lexical scanning and parsing > rules</a> > - ([<a href="refs.html#ref-CSS21">CSS21</a>], section G.2), the keyword > "sRGB" is > - case-insensitive; however, it is recommended that the mixed > - capitalization "sRGB" be used for consistency with common > - industry practice.</p> > - </dd> > - > - <dt><span class='prop-value'><a><identifier></a></span></dt> > - <dd>A name corresponding to a defined color profile that is > - in the user agent's color profile description database. The > - user agent searches the color profile description database > - for a <a href="color.html#ColorProfileDescriptions">color > - profile description</a> entry whose name descriptor matches > - <identifier> and uses the last matching entry that is found. > - If a match is found, the corresponding profile overrides an > - embedded profile inside an image. If no match is found, then > - the embedded profile inside the image is used.</dd> > - > - <dt><span class='prop-value'><a > - href="types.html#DataTypeIRI"><iri></a></span></dt> > - <dd>An <a>IRI reference</a> to the source color profile. The referenced > - color profile overrides an embedded profile inside the > - image.</dd> > -</dl> > + > + > + <div class="ready-for-wider-review"> > + <h2 id="syntax">Color syntax</h2> > + <p>The EBNF grammar is as used in the <a > href="http://www.w3.org/TR/REC-xml/#sec-notation">XML > specification</a>, > + with the addition of a <em>case-insensitive literal</em>: > + characters in the ASCII range (only) are case-insensitive. ~"Hello" will > match (H|h)(e|e)(l|L)(l|L)(o|O). This makes the productions much easier to > read.</p> <table> > + <tr><td>?</td><td>optional, zero or one</td></tr> > + <tr><td>+</td><td>one or more</td></tr> > + <tr><td>*</td><td>zero or more</td></tr> > + <tr><td>|</td><td>alternation</td></tr> > + <tr><td>"string"</td><td>literal</td></tr> > + <tr><td>~"string"</td><td>case-insensitive literal</td></tr> > + <tr><td>[]</td><td>a character range</td></tr> > + <tr><td>[^]</td><td>excluded character range</td></tr> > + <tr><td>()</td><td>grouping</td></tr> > + </table> > + > + > + <pre> > + <span id="icccolor">icccolor</span> ::= > + ~"icc-color(" <a href="#name">name</a> (<a href="#comma- > wsp">comma-wsp</a> <a href="#number">number</a>)+ ")" > + > + <span id="iccnamedcolor">iccnamedcolor</span> ::= > + ~"icc-named-color(" <a href="#name">name</a> <a href="#comma- > wsp">comma-wsp</a> <a href="#namedColor">namedColor</a> ")" > + > + <span id="cielabcolor">cielabcolor</span> ::= > + ~"cielab(" <a href="#lightness">lightness</a> <a href="#comma- > wsp">comma-wsp</a> <a href="#a-value">a-value</a> <a href="#comma- > wsp">comma-wsp</a> <a href="#b-value">b-value</a> ")" > + > + <span id="cielchabcolor">cielchabcolor</span> ::= > + ~"cielchab(" <a href="#lightness">lightness</a> <a href="#comma- > wsp">comma-wsp</a> <a href="#chroma">chroma</a> <a href="#comma- > wsp">comma-wsp</a> <a href="#hue">hue</a> ")" > + > + <span id="devicecolor">devicecolor</span> ::= > + <a href="#devicegray">device-gray</a> | <a > + href="#devicergb">devicergb</a> | <a > href="#devicecmyk">devicecmyk</a> > + | <a href="#devicenchannel">devicenchannel</a> > + > + <span id="devicegray">devicegray</span> ::= > + ~"device-gray(" <a href="#gray">gray</a> ")" > + > + <span id="devicergb">devicergb</span> ::= > + ~"device-rgb(" <a href="#red">red</a> <a href="#green">green</a> <a > href="#blue">blue</a> ")" > + > + <span id="devicecmyk">devicecmyk</span> ::= > + ~"device-cmyk(" <a href="#cyan">cyan</a> <a > href="#magenta">magenta</a> <a href="#yellow">yellow</a> ><a > href="#black">black</a> ")" > + > + <span id="devicenchannel">devicenchannel</span> ::= > + ~"device-nchannel(" <a href="#number">number</a>+ ")" > + > + <span id="name">name</span> ::= > + <a href="#namestartchar">namestartchar</a> (<a > + href="#namechar">namechar</a>)* > + > + <span id="lightness">lightness</span> ::= > + <a href="#number">number</a> > + > + <span id="a-value">a-value</span> ::= > + <a href="#number">number</a> > + > + <span id="b-value">b-value</span> ::= > + <a href="#number">number</a> > + > + <span id="chroma">chroma</span> ::= > + <a href="#number">number</a> > + > + <span id="hue">hue</span> ::= > + <a href="#number">number</a> > + > + > + <span id="gray">gray</span> ::= > + <a href="#number">number</a> > + > + <span id="red">red</span> ::= > + <a href="#number">number</a> > + > + <span id="green">green</span> ::= > + <a href="#number">number</a> > + > + <span id="blue">blue</span> ::= > + <a href="#number">number</a> > + > + <span id="cyan">cyan</span> ::= > + <a href="#number">number</a> > + > + <span id="magenta">magenta</span> ::= > + <a href="#number">number</a> > + > + <span id="yellow">yellow</span> ::= > + <a href="#number">number</a> > + > + <span id="black">black</span> ::= > + <a href="#number">number</a> > + > + <span id="namedColor">namedColor</span> ::= > + <a href="#name">name</a> > + > + <span id="fallback">fallback</span> ::= > + <a href="#color">color</a> > + > + <span id="color">color</span> ::= > + "#" <a href="#hexdigit">hexdigit</a> <a href="#hexdigit">hexdigit</a> > <a href="#hexdigit">hexdigit</a> (<a href="#hexdigit">hexdigit</a> <a > href="#hexdigit">hexdigit</a> <a href="#hexdigit">hexdigit</a>)? > + | ~"rgb(" <a href="#wsp">wsp</a>* <a href="#integer">integer</a> <a > href="#comma">comma</a> <a href="#integer">integer</a> <a > href="#comma">comma</a> <a href="#integer">integer</a> <a > href="#wsp">wsp</a>* ")" > + | ~"rgb(" <a href="#wsp">wsp</a>* <a href="#integer">integer</a> "%" > <a href="#comma">comma</a> <a href="#integer">integer</a> "%" <a > href="#comma">comma</a> <a href="#integer">integer</a> "%" <a > href="#wsp">wsp</a>* ")" > + | ~"hsl(" <a href="#wsp">wsp</a>* <a href="#integer">integer</a> <a > href="#comma">comma</a> <a href="#integer">integer</a> <a > href="#comma">comma</a> <a href="#integer">integer</a> <a > href="#wsp">wsp</a>* ")" > + | ~"hsla(" <a href="#wsp">wsp</a>* <a href="#integer">integer</a> > <a href="#comma">comma</a> <a href="#integer">integer</a> <a > href="#comma">comma</a> <a href="#integer">integer</a> <a > href="#comma">comma</a> <a href="#integer">integer</a> <a > href="#wsp">wsp</a>* ")" > + | <a href="#color-keyword">color-keyword</a> > + > + <span id="hexdigit">hexdigit</span> ::= > + [0-9A-Fa-f] > + > + <span id="number">number</span> ::= > + <a href="#sign">sign</a>? <a > + href="#digit-sequence">digit-sequence</a>? "." <a > + href="#digit-sequence">digit-sequence</a> > + > + <span id="sign">sign</span>::= > + "+" | "-" > + > + <span id="integer">integer</span> ::= > + <a href="#digit-sequence">digit-sequence</a> > + > + <span id="digit-sequence">digit-sequence</span> ::= > + [0-9]+ > + > + <span id="namestartchar">namestartchar</span> ::= > + ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [ > + #xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | > + [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | > + [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] > + > + <span id="namechar">namechar</span> ::= > + <a href="#namestartchar">namestartchar</a> | "-" | "." | [0-9] | #xB7 | > [#x0300-#x036F] | > + [#x203F-#x2040] > + > + > + <span id="comma-wsp">comma-wsp</span> ::= > + (<a href="#wsp">wsp</a>+ <a href="#comma">comma</a>? <a > + href="#wsp">wsp</a>*) | (<a href="#comma">comma</a> <a > + href="#wsp">wsp</a>*) > + > + <span id="comma">comma</span> ::= > + "," > + > + <span id="wsp">wsp</span> ::= > + (#x20 | #x9 | #xD | #xA) > + > + <span id="color-keyword">color-keyword</span> ::= > + ~"aliceblue" | ~"antiquewhite" | ~"aqua" | ~"aquamarine" | ~"azure" | > ~"beige" | > + ~"bisque" | ~"black" | ~"blanchedalmond" | ~"blue" | ~"blueviolet" | > ~"brown" | > + ~"burlywood" |~"cadetblue" | ~"chartreuse" | ~"chocolate" | ~"coral" | > ~"cornflowerblue" | > + ~"cornsilk" | ~"crimson" | ~"cyan" | ~"darkblue" | ~"darkcyan" | > ~"darkgoldenrod" | > + ~"darkgray" | ~"darkgreen" | ~"darkgrey" | ~"darkkhaki" | > ~"darkmagenta" | ~"darkolivegreen" | > + ~"darkorange" | ~"darkorchid" | ~"darkred" | ~"darksalmon" | > ~"darkseagreen" | ~"darkslateblue" | > + ~"darkslategray" | ~"darkslategrey" | ~"darkturquoise" | ~"darkviolet" | > ~"deeppink" | ~"deepskyblue" | > + ~"dimgray" | ~"dimgrey" | ~"dodgerblue" | ~"firebrick" | ~"floralwhite" | > ~"forestgreen" | > + ~"fuchsia" | ~"gainsboro" | ~"ghostwhite" | ~"gold" | ~"goldenrod" | > ~"gray" | > + ~"grey" | ~"green" | ~"greenyellow" | ~"honeydew" | ~"hotpink" | > ~"indianred" | > + ~"indigo" | ~"ivory" | ~"khaki" | ~"lavender" | ~"lavenderblush" | > ~"lawngreen" | > + ~"lemonchiffon" | ~"lightblue" | ~"lightcoral" | ~"lightcyan" | > ~"lightgoldenrodyellow" | ~"lightgray" | > + ~"lightgreen" | ~"lightgrey" | ~"lightpink" | ~"lightsalmon" | > ~"lightseagreen" | ~"lightskyblue" | > + ~"lightslategray" | ~"lightslategrey" | ~"lightsteelblue" | ~"lightyellow" | > ~"lime" | > + ~"limegreen" | ~"linen" | ~"magenta" | ~"maroon" | > ~"mediumaquamarine" | ~"mediumblue" | > + ~"mediumorchid" | ~"mediumpurple" | ~"mediumseagreen" | > ~"mediumslateblue" | ~"mediumspringgreen" | ~"mediumturquoise" | > + ~"mediumvioletred" | ~"midnightblue" | ~"mintcream" | ~"mistyrose" | > ~"moccasin" | ~"navajowhite" | > + ~"navy" | ~"oldlace" | ~"olive" | ~"olivedrab" | ~"orange" | ~"orangered" > | > + ~"orchid" | ~"palegoldenrod" | ~"palegreen" | ~"paleturquoise" | > ~"palevioletred" | ~"papayawhip" | > + ~"peachpuff" | ~"peru" | ~"pink" | ~"plum" | ~"powderblue" | ~"purple" | > + ~"red" | ~"rosybrown" | ~"royalblue" | ~"saddlebrown" | ~"salmon" | > ~"sandybrown" | > + ~"seagreen" | ~"seashell" | ~"sienna" | ~"silver" | ~"skyblue" | > ~"slateblue" | > + ~"slategray" | ~"slategrey" | ~"snow" | ~"springgreen" | ~"steelblue" | > ~"tan" | > + ~"teal" | ~"thistle" | ~"tomato" | ~"turquoise" | ~"violet" | ~"wheat" | > + ~"white" | ~"whitesmoke" | ~"yellow" | ~"yellowgreen" > + </pre> > + > + > + </div> > + > > <h2 id="DOMInterfaces">DOM interfaces</h2> > > <h3 id="InterfaceSVGColorProfileElement">Interface > SVGColorProfileElement</h3> > > > <edit:with element='color-profile'> > > diff --git a/master/refs.html b/master/refs.html > --- a/master/refs.html > +++ b/master/refs.html > @@ -475,16 +475,21 @@ > <br/>The <a href="http://www.w3.org/TR/xsl/">latest edition of XSL</a> > is available at > http://www.w3.org/TR/xsl/. > </dd> > </dl> > > <h2 id="InformativeReferences">Informative references</h2> > > <dl class="references"> > + <dt id="ref-BRADFORD" class="informref">[BRADFORD]</dt> > + <dd>Originally described in <cite>K.M. Lam, <i>Metamerism and Colour > Constancy</i>, > + Ph.D. Thesis, University of > + Bradford, 1985.</cite>. The linearised Bradford is a simplificaton, > + widely used in practice, and expressible as a 3x3 matrix. See for > + example Lindbloom, <a > + > href="http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html" > >Ch > + romatic Adaptation</a>.</dd> > + > <dt id="ref-CHARMOD" class="informref">[CHARMOD]</dt> > <dd> > <cite class="w3crec"><a href="http://www.w3.org/TR/2005/REC- > charmod-20050215/">Character Model for the World Wide Web 1.0: > Fundametnals</a></cite>, > M. Dürst, F. Yergeau, R. Ishida, M. Wolf, T. Texin, eds. > World Wide Web Consortium, 15 February 2005. > <br/>This edition of Charmod Fundamentals is > http://www.w3.org/TR/2005/REC-charmod-20050215/. > <br/>The <a href="http://www.w3.org/TR/charmod/">latest edition of > Charmod Fundamentals</a> is available at > http://www.w3.org/TR/charmod/. > diff --git a/master/style/default.css b/master/style/default.css > --- a/master/style/default.css > +++ b/master/style/default.css > @@ -156,17 +156,17 @@ code.css { font-family: inherit; font-si > code.html { color: #600 } /* inline HTML */ > code.xml { color: #600 } /* inline XML */ > .property { font: inherit; white-space: nowrap; } /* name of a CSS > property (SPAN) */ > .descriptor { } /* name of a CSS descriptor (SPAN) */ > .type { font-style: italic } /* A <type> value for a property */ > > dfn { font-weight: bolder; /*font-size: 1em*/ } > > -p.issue, div.issue, p.note, div.note, div.example { > +p.issue, div.issue, p.note, div.note, div.example, div.requirement { > padding: .5em; > border-left-width: .5em; > border-left-style: solid; > } > > /* Open issue / editorial remark; not intended for a final publication */ > p.issue, div.issue { > border-color: #E05252; > @@ -178,16 +178,27 @@ p.issue:before, div.issue:before { > content: "Issue " counter(issue); > padding-right: 1em; > text-transform: uppercase; > color: #E05252; > } > > span.issue { color: red; } > > +/* Conformance requirement */ > + > +div.requirement { > + border-color: #007070; > + background: #A0E0E0; > + } > + > +div.requirement > p { > + margin-top: 0 > + } > + > /* Class note is a non-normative note. May be inline or a P or DIV */ p.note, > div.note { > border-color: #52E052; > background: #E9FBE9; > } > > span.note { color: green; } > >
Received on Monday, 20 August 2012 20:15:19 UTC