Le descripteur unicode-range
, associé à la règle @ @font-face
, définit l'intervalle de caractères qui peuvent être représentés par cette police pour la page. Si la page n'utilise aucun caractère de cet intervalle, la police n'est pas téléchargée. Si, au contraire, elle utilise au moins un caractère appartenant à cet intervalle, toute la police est téléchargée.
Le but de ce descripteur est de segmenter les ressources liées aux polices afin que le navigateur puisse ne télécharger que les polices dont il a besoin pour le texte d'un document. Ainsi, un site disposant de nombreuses traductions pourrait proposer des ressources distinctes pour l'anglais, le grec et le japonais et seules les ressources nécessaires (dont les fichiers de polices) seraient téléchargées.
En lien avec les règles @ | @font-face |
---|---|
Valeur initiale | U+0-10FFFF |
Média | tous |
Valeur calculée | comme spécifié |
Ordre canonique | l'ordre d'apparition dans la grammaire formelle des valeurs |
Syntaxe
/* Valeurs <unicode-range> */ unicode-range: U+26; /* un seul point de code */ unicode-range: U+0-7F; unicode-range: U+0025-00FF; /* un intervalle spécifique */ unicode-range: U+4??; /* un intervalle de substitution */ unicode-range: U+0025-00FF, U+4??; /* plusieurs valeurs */
Valeurs
Une valeur de type <unicode-range>
peut se présenter de trois façons différentes :
- un seul point de code
- Ex :
U+26
- Ex :
- un intervalle spécifique de points de code
- Ex :
U+0025-00FF
indique que l'intervalle contient tous les caractères contenus entre les points de codeU+0025
etU+00FF
- Ex :
- un intervalle de substitution indiqué par
?
- Un intervalle de points de code Unicode indiqué par une valeur contenant un point d'interrogation. Ainsi,
U+4??
signifie « tous les caractères contenus dans l'intervalle entre les points de codeU+400
etU+4FF
).
- Un intervalle de points de code Unicode indiqué par une valeur contenant un point d'interrogation. Ainsi,
Syntaxe formelle
<unicode-range>#
Exemples
Dans cet exemple, on crée un élément HTML <div>
pour lequel on veut que l'esperluette soit mise en forme avec une police différente. Pour que le résultat soit apparent, on utilisera une police sans empattement pour le texte (Helvetica) et une police avec des empattements (Times New Roman) pour l'esperluette.
CSS
Dans la feuille de style CSS, on définit une règle @font-face
qui n'inclue qu'un seul caractère. Cela signifie que seul ce caractère sera affiché avec cette police. On aurait également pu encadrer l'esperluette dans un élément <span>
et appliquer une autre règle sur cet élément mais on aurait alors eu un balisage plus lourd et une règle spécifique en plus sur la feuille de style.
@font-face { font-family: 'Ampersand'; src: local('Times New Roman'); unicode-range: U+26; } div { font-size: 4em; font-family: Ampersand, Helvetica, sans-serif; }
HTML
<div>Me & You = Us</div>
Résultat de référence (image statique)
Résultat du navigateur
Spécifications
Spécification | État | Commentaires |
---|---|---|
CSS Fonts Module Level 3 La définition de 'unicode-range' dans cette spécification. |
Candidat au statut de recommandation | Définition initiale. |
Compatibilité des navigateurs
Fonctionnalité | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | 44 (44)[1] | (Oui)[2] | 9.0[2] | (Oui)[2] | (Oui)[2] |
Fonctionnalité | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mini | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | (Oui) | 44.0 (44)[1] | 9.0 | Pas de support | 10.0 | (Oui) |
[1] À partir de Firefox 4 et jusqu'à Firefox 34, le descripteur unicode-range
était analysé mais l'intervalle était ignoré. À partir de 35, unicode-range
peut être activé sur les plateformes autres que Linux en utilisant la préférence layout.css.unicode-range.enabled
qui est activée par défaut sur le canal Nightly/Aurora. Sur Linux, cela fut possible à partir de Firefox 41.
[2] Firefox et Chrome respectent la valeur de unicode-range
lors du téléchargement des ressources (à partir de Chrome 36, cf. Chromium bug 247920). Safari et Internet Explorer ignorent la valeur de unicode-range
lors du téléchargement mais la respectent lors du choix de la police à utiliser pour le texte.