4 septembre 2001

12 La couleur


Contenu

12.1 Introduction

Toutes les couleurs SVG sont spécifiées dans l'espace de couleur sRGB (voir [SRGB]). Au minimum, les agents utilisateurs SVG doivent se conformer aux obligations de comportement de couleur spécifiées dans la section sur les unités de couleur vf. et dans les règles de correction du gamma minimales vf. définies dans la spécification CSS2.

En plus, un contenu SVG peut avoir une spécification de couleur alternative en utilisant un profil ICC (voir [ICC32]). Si on fournit des couleurs basées sur ICC et si l'agent utilisateur SVG gère la couleur ICC, alors la couleur basée sur ICC a préséance sur la spécification de couleur sRGB. Remarquer qu'une interpolation de couleur survient dans un espace de couleur RGB même si on spécifie une couleur basée sur ICC (voir la propriété 'color-interpolation').

12.2 La propriété 'color'

On utilise la propriété 'color' pour donner une valeur de couleur potentielle indirecte (currentColor) aux propriétés 'fill', 'stroke', 'stop-color', 'flood-color' et 'lighting-color'.

'color'
Valeur :   <couleur> | inherit vf.
Valeur initiale :   selon l'agent utilisateur
S'applique à :   ceux des éléments sur lesquels les propriétés 'fill', 'stroke', 'stop-color', 'flood-color' et 'lighting-color' s'appliquent
Héritée :   oui
Pourcentages :   sans objet
Médias :   visuel
Animable :   oui

Excepté les compléments apportés dans cette spécification, la définition normative de la propriété se trouve dans [CSS2 vf.].


12.3 Les descriptions des profils de couleur


12.3.1 Aperçu sur les descriptions des profils de couleur

Le Consortium de la Couleur International [N.d.T. International Color Consortium] a établi un standard, le profil ICC [ICC32], pour documenter les caractéristiques de couleur en entrée et en sortie des appareils. En utilisant ces profils, il est possible de construire une transformation et des données visuelles correctes pour leur vision sur différents appareils.

Une description de profil de couleur fournit un pont entre un profil ICC et les références à ce profil ICC dans un contenu SVG. La description de profil de couleur est ajoutée à la liste des profils de couleur connus de l'agent utilisateur puis est utilisée pour la sélection du profil concerné. La description de profil de couleur contient des descripteurs pour la location du profil de couleur sur le Web, un nom qui référence le profil et des informations sur l'intention du rendu.


12.3.2 Les autres manières de définir une description de profil de couleur

On peut spécifier des descriptions de profil de couleur de l'une des manières suivantes :

Si un profil de couleur avec une même valeur de nom est identifiée à la fois par un élément 'color-profile' et une règle @color-profile dans une feuille de style CSS, alors l'agent utilisateur devra d'abord essayer de trouver le profil en utilisant les spécifications dans la règle @color-profile.


12.3.3 L'élément 'color-profile'

<!ELEMENT color-profile (%descTitleMetadata;) >
<!ATTLIST color-profile 
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  local CDATA #IMPLIED  
  name CDATA #REQUIRED
  rendering-intent (auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric) "auto" >

Définitions des attributs :

xlink:href = "<uri>"
La location d'une ressource de profil ICC.
Animable : non.
local = "<chaîne>"
L'ID unique d'un profil de couleur stocké localement. La valeur <chaîne> est l'ID unique du profil comme spécifié par International Color Consortium. Si les deux attributs xlink:href et local sont spécifiés, alors l'agent utilisateur recherchera d'abord dans le système local le profil de couleur stocké localement puis, s'il n'est pas disponible, il essaiera d'utiliser la ressource identifiée par l'attribut xlink:href. (Remarque : Les champs de la description de profil ne représentent pas l'ID unique d'un profil. Selon les propositions courantes de ICC, l'ID unique du profile est une valeur avec un codage MD5 dans l'en-tête du profil).
Animable : non.
name = "<nom>"
Le nom utilisé comme premier paramètre pour les spécifications icc-color des valeurs des propriétés specifications within 'fill', 'stroke', 'stop-color', 'flood-color' et 'lighting-color', dans l'identification du profil de couleur à utiliser pour la spécification de couleur ICC, ce nom peut être la valeur de la propriété 'color-profile'. Remarquer que si la valeur <nom> n'est pas fournie, il sera impossible d'appeler la description de profil de couleur donnée. Le nom "sRGB" est prédéfini ; toute description de profil de couleur, dont la valeur de <nom> est "sRGB", sera ignorée. Pour une cohérence avec les règles lexicales CSS de lecture et d'interprétation vf., le mot-clé "sRGB" est insensible à la casse ; cependant, on recommande l'emploi de la capitalisation mixte "sRGB" pour la cohérence avec les pratiques commune de l'industrie.
Animable : non.
rendering-intent = "auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric"

La propriété 'rendering-intent' autorise la spécification d'une intention de rendu d'un profil de couleur autre que celle par défaut. La propriété 'rendering-intent' ne concerne principalement que les profils de couleur correspondant aux espaces de couleur CMYK. Les différentes options entraîne l'utilisation de différentes méthodes de conversion de couleur vers le gamut de couleur de l'appareil de rendu cible :

auto
C'est le comportement par défaut. L'agent utilisateur détermine la meilleure intention en fonction du type de contenu. Pour un contenu image avec un profil incorporé, on supposera que l'intention spécifiée dans le profil est celle voulue. Autrement, l'agent utilisateur utilisera le profil courant et forcera l'intention, surclassant toute intention qui serait contenue dans le profil lui-même.
perceptual
Cette méthode, souvent celle préférée pour les images, conserve les relations entre couleurs. Elle essaye de maintenir des valeurs de couleur relatives parmi les pixels alors que ceux-ci sont reliés au gamut de l'appareil cible. Parfois, les valeurs de pixel qui, à l'origine, tombaient dans le gamut de l'appareil cible, sont changés pour éviter les glissements de teinte et les discontinuités et pour préserver, autant que possible, l'apparence d'ensemble de la scène.
saturation
Préserve les valeurs de saturation relatives (chroma) des pixels originaux. Les couleurs hors-gamut sont converties en couleurs de même saturation, mais tombant juste à l'intérieur du gamut.
relative colorimetric
Laisse inchangées les couleurs tombant dans le gamut. Cette méthode convertit habituellement les couleurs hors-gamut en couleurs de même brillance, mais tombant juste à l'intérieur du gamut.
absolute colorimetric
Désactive la correspondance avec le point blanc lors de la conversion des couleurs. En général, cette option n'est pas recommandée.

Animable : non.
Attributs définis ailleurs :
%stdAttrs;, %xlinkRefAttrs;.

12.3.4 La règle @color-profile lors de l'utilisation de styles CSS

Quand on style le document avec CSS, on peut utiliser la règle @color-profile pour spécifier une description de profil de couleur. La forme générale en est :

@color-profile { <description-profil-couleur> }
où le type <description-profil-couleur> a la forme :
descripteur: valeur;
[...]
descripteur: valeur;

Chaque règle @color-profile spécifie une valeur pour chaque descripteur de profil de couleur, soit implicitement, soit explicitement. Ceux qui ne reçoivent pas de valeur explicite dans la règle prennent la valeur initiale, qui est donnée pour chaque descripteur dans cette spécification. Ces descripteurs ne s'appliquent que dans le contexte de la règle @color-profile dans laquelle ils sont définis, et ne s'appliquent pas aux éléments du langage du document. Ainsi, il n'existe aucune notion d'éléments sur lesquels les descripteurs s'appliquent ni d'éléments enfants héritant de valeurs.

Les descripteurs pour une valeur <description-profil-couleur> sont les suivants :

'src' (Descripteur)
Values: sRGB | <profil-local> | <uri> | (<profil-local> <uri>) | inherit vf.
Valeur initiale : sRGB
Médias : visuel
sRGB
Le profil source est l'espace de couleur sRGB. Pour une cohérence avec les règles lexicales CSS pour la lecture et l'interprétation vf., le mot-clé "sRGB" est sensible à la casse ; cependant, on recommande l'utilisation de la capitalisation mixte "sRGB" pour une cohérence avec les pratiques communes de l'industrie.
<profil-local>
Le profil source est un profil stocké localement. La syntaxe du type <profil-local> est :
"local(" + <chaîne> + ")"
où la valeur <chaîne> représente l'ID unique du profil, comme spécifié par International Color Consortium. (Remarque : Les champs de la description de profile ne représentent pas l'ID unique d'un profil. Selon les propositions courantes ICC, l'ID unique du profil est une valeur encodée en MD5 dans l'en-tête du profil).
<uri>
Le profil source est une référence d'URI vers un profil de couleur.
(<profil-local> <uri>)
Deux profils sont spécifiés. Si la valeur <profil-local> ne peut être trouvé sur le système local, alors la valeur <uri> est utilisée.
'name' (Descripteur)
Values: <nom>
Valeur initiale : non définie
Médias : visuel
<nom>
Voir la description de l'attribut name sur l'élément 'color-profile'. Remarquer que si la valeur <nom> n'est pas fournie, il sera impossible d'appeler la définition @color-profile donnée.
'rendering-intent' (Descripteur)
Values: auto | perceptual | relative-colorimetric |
saturation | absolute-colorimetric
Valeur initiale : auto
Médias : visuel
Animable :   no

Voir la description de l'attribut rendering-intent sur l'élément 'color-profile'.


12.3.5 La propriété 'color-profile'

 

'color-profile'
Valeur :   auto | sRGB | <nom> | <uri> | inherit vf.
Valeur initiale :   auto
S'applique à :   ceux des éléments 'image' qui se rapporte à des images pixélisées
Héritée :   oui
Pourcentages :   sans objet
Médias :   visuel
Animable :   oui
auto
C'est le comportement par défaut. Toutes les couleurs sont sensées être définies dans l'espace de couleur sRGB, à moins qu'un profil incorporé plus précis ne soit spécifié dans les données du contenu. Pour les images qui ont un profil incorporé dans leurs données, celui-ci est utilisé. Pour les images qui n'ont en pas, le profil sRGB est utilisé.
sRGB
Le profil source est sensé être sRGB. Cette valeur diffère de la valeur "auto" en ceci qu'elle surclasse un profil incorporé dans une image.

Pour une cohérence avec les règles lexicales CSS pour la lecture et l'interprétation vf., le mot-clé "sRGB" est sensible à la casse ; cependant, on recommande l'utilisation de la capitalisation mixte "sRGB" pour une cohérence avec les pratiques communes de l'industrie.
<nom>
Un nom correspondant à un profil de couleur défini qui est dans la base de données de description de profil de couleur de l'agent utilisateur. L'agent utilisateur parcourt la base de données des descriptions de profil pour y rechercher une entrée de description de profil de couleur, dont le nom du descripteur correspond avec la valeur de <nom>, et utilise la dernière entrée correspondante trouvée. Si une correspondance est vérifiée, le profil correspondant surclasse un profil incorporé dans une image. Dans le cas contraire, c'est le profil incorporé qui est utilisé.
<uri>
Une référence d'URI vers un profil de couleur source. Le profil de couleur appelé surclasse un profil de couleur incorporé dans une image.

12.4 Les interfaces du DOM

Les interfaces sont définies ci-dessous : SVGColorProfileElement, SVGColorProfileRule.


L'interface SVGColorProfileElement

L'interface SVGColorProfileElement correspond à l'élément 'color-profile'.


Définition IDL
interface SVGColorProfileElement : 
                SVGElement,
                SVGURIReference,
                SVGRenderingIntent { 

           attribute DOMString      local;
                       // déclenche une DOMException à l'initialisation
           attribute DOMString      name;
                       // déclenche une DOMException à l'initialisation
           attribute unsigned short renderingIntent;
                       // déclenche une DOMException à l'initialisation
};

attributs
DOMString local
Correspond à l'attribut local sur l'élément donné.
Exceptions à l'initialisation
DOMException
NO_MODIFICATION_ALLOWED_ERR : déclenchée lors d'une tentative de modifier la valeur d'un attribut en lecture seule.
DOMString name
Correspond à l'attribut name sur l'élément donné.
Exceptions à l'initialisation
DOMException
NO_MODIFICATION_ALLOWED_ERR : déclenchée lors d'une tentative de modifier la valeur d'un attribut en lecture seule.
unsigned short renderingIntent
Correspond à l'attribut rendering-intent sur l'élément donné. Le type de l'intention de rendu, identifié par l'ine des constantes de SVGRenderingIntent.
Exceptions à l'initialisation
DOMException
NO_MODIFICATION_ALLOWED_ERR : déclenchée lors d'une tentative de modifier la valeur d'un attribut en lecture seule.

L'interface SVGColorProfileRule

L'interface SVGColorProfileRule représente une règle @color-profile dans une feuille de style CSS. Une règle @color-profile identifie un profil ICC qui peut être appelé dans un document donné.

La gestion de l'interface SVGColorProfileRule n'est seulement requise que pour les agents utilisateurs qui gèrent le style avec CSS.


Définition IDL
interface SVGColorProfileRule : 
                SVGCSSRule,
                SVGRenderingIntent { 

           attribute DOMString      src;
                       // déclenche une DOMException à l'initialisation
           attribute DOMString      name;
                       // déclenche une DOMException à l'initialisation
           attribute unsigned short renderingIntent;
                       // déclenche une DOMException à l'initialisation
};

attributs
DOMString src
Correspond à la propriété src dans une règle @color-profile.
Exceptions à l'initialisation
DOMException
NO_MODIFICATION_ALLOWED_ERR : déclenchée lors d'une tentative de modifier la valeur d'un attribut en lecture seule.
DOMString name
Correspond à la propriété name dans une règle @color-profile.
Exceptions à l'initialisation
DOMException
NO_MODIFICATION_ALLOWED_ERR : déclenchée lors d'une tentative de modifier la valeur d'un attribut en lecture seule.
unsigned short renderingIntent
Le type de l'intention de rendu, identifié par une des constantes de SVGRenderingIntent.
Exceptions à l'initialisation
DOMException
NO_MODIFICATION_ALLOWED_ERR : déclenchée lors d'une tentative de modifier la valeur d'un attribut en lecture seule.