@font-feature-values - Directive CSS

@font-feature-values

Résumé des caractéristiques de la directive @font-feature-values

Description rapide
Définit les variantes typographiques à utiliser.
Statut
Problèmes de compatibilité
Module W3C
Module CSS - Polices de caractères
Références (W3C)
Statut du document: WD (document de travail)

Description de la directive @font-feature-values.

@font-feature-values est une directive du langage CSS. Elle permet d'utiliser plus facilement les possibilités typographiques des polices WOFF, en particulier la substitution de caractères : remplacement de certaines majuscules par des caractères plus ornés, remplacement de lettres par des symboles, etc.

Plus précisément @font-feature-values définit les variantes typographiques qui seront ensuite utilisées par la propriété font-variant-alternates.

Les polices de caractères TTF, OTF, WOFF, etc. permettent le remplacement de caractères conditionnel. On peut par exemple remplacer les lettres f i, lorsqu'elles se suivent, par le caractère fi (ligature) ou choisir une forme de lettre (glyphe) différente de façon occasionnelle.

LigatureLigature     LigatureLigature

Pour plus d'informations sur les possibilités de substitution de caractères, reportez-vous la page sur font-feature-settings.

Mais le codage des caractères de substitution n'est pas forcément le même dans toutes les polices de caractères. Par exemple, le caractère 𝒜 peut être obtenu dans le jeu de caractères 'aalt'1 pour une première police, et dans le jeu de caractères 'swsh'2 dans une autre police. Il peut également être inexistant dans une troisième police.
Ce problème est particulièrement ennuyeux lorsque la police demandée n'est pas disponible, car le navigateur va alors en utiliser une autre, et les caractères de substitution ne vont plus correspondre.

@font-feature-values permet de simplifier l'utilisation des substitutions de caractères en leur associant des identifiants clairs, parlants, et propres à chacune des polices. Voici par exemple comment définir une variante stylistique dénommée fleurons, correspondant à la première variante disponible dans la police.

@font-feature-values 'Police1' { @ornaments { fleurons: 1 } } @font-feature-values 'Police2' { @ornaments { fleurons: 3 } }

Cette variante est ensuite utilisée par font-variant-alternates. Dans l'exemple on l'applique à tous les paragraphes de la classe deco.

p.deco { font-family: 'Police1', 'Police2'; font-variant-alternates: ornaments(fleurons); }

Un résultat comparable aurait pu être obtenu avec la propriété de bas niveau font-feature-settings, mais avec une syntaxe moins claire, et surtout qui ne serait valable que pour une seule police :

p.deco { font-family: 'Police1', 'Police2'; font-values-settings:'ornm'1; /* Incorrect pour Police2 */ }

Syntaxes pour @font-feature-values.

  • @font-feature-values 'Warnock', 'Countryside' { @annotation {demo-nalt:1;} }

    Glyphes adaptés aux annotations, par exemple des caractères entourés d'un cercle, ou entre parenthèses.
    Correspond au code Open Type nalt.
    La variante définie peut être utilisée avec font-variant-alternates et la fonction annotation().
    (L'exemple ci-dessous est une simulation).

    Caractère standard 1
    font-feature-settings:'nalt'1;
    font-variant-alternates:annotation(demo-nalt);
  • @font-feature-values 'Warnock', 'Countryside' { @character-variant {demo-cv:3 1;} }

    Forme des caractères alternatives.
    Correspond aux codes Open Type de cv01 à cv99.
    La variante définie peut être exploitée avec font-variant-alternates et la fonction character-variant().

    Une ou deux valeurs peuvent être indiquées, avec le fonctionnement suivant :
    demo: 2 associe cv02 à 1.
    demo: 2 3 associe cv02 à 3.

    Caractère standard A
    font-feature-settings:'cv01'on; A
    font-variant-alternates:character-variant(demo-cv); A
  • @font-feature-values 'Warnock', 'Countryside' { @historical-forms { } }

    Caractères dans leur forme traditionnelle.
    Correspond au code Open Type hist.
    Cette possibilité est prévue dans la syntaxe mais ne semble pas exploitable avec font-variant-alternates.

    Caractère standard s
    font-feature-settings:'hist'on; s
    font-variant-alternates:historical-forms; s
  • @font-feature-values 'Warnock', 'Countryside' { @ornaments {demo-ornm: 1;} }

    Caractères et symboles décoratifs.
    Correspond au code Open Type ornm.
    La variante définie est exploitable avec font-variant-alternates et la fonction ornaments().

    Caractère standard m
    font-feature-settings:'ornm'on; m
    font-variant-alternates:ornaments(demo-ornm); m
  • @font-feature-values 'Warnock', 'Countryside' { @styleset {demo-ss: 1 2 5;} }

    Caractères avec des formes plus stylisées.
    Correspond aux codes Open Type de ss01 à ss20.
    La variante ainsi définie est exploitable avec font-variant-alternates et la fonction styleset().

    Plusieurs valeurs peuvent être spécifiées : toutes ces variante seront associées à l'identifiant. Notre exemple associe les variantes ss01, ss02 et ss02 à l'identifiant demo-ss.

    Caractère standard E
    font-feature-settings:'ss01'on; E
    font-variant-alternates:styleset(demo-ss);E
  • @font-feature-values 'Warnock', 'Countryside' { @stylistic {demo-salt:1;} }

    Caractères avec des formes plus stylisées.
    Correspond au code Open Type salt.
    La variante définie est utilisable avec la propriété font-variant-alternates et la fonction stylistic().

    Avec la police que nous avons utilisée (Countryside) la différence se voit peu: : cependant on voit une différence dans la forme des lettres  m  et  o.

    Caractère standard Démo
    font-feature-settings:'salt'on; Démo
    font-variant-alternates:stylistic(demo-salt); Démo
  • @font-feature-values 'Warnock','Countryside' { @swash {demo-swsh:1;} }

    Autres formes des caractères.
    Correspond au code Open Type swsh.
    La variante définie est utilisable avec la propriété font-variant-alternates et la fonction swash().

    Caractère standard U
    font-feature-settings:'swsh'on; U
    font-variant-alternates:swash(demo-swsh); U

Prise en charge par les navigateurs (compatibilité).

La directive @font-feature-values est maintenant bien reconnue par les navigateurs, mais les variantes peuvent exister ou non suivant la police de caractères choisie.

1
Directive
@font-feature-values
Estimation de la prise en charge globale.
93%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

Baidu Browser

QQ Browser

Opéra Mobile

Firefox

Chrome

Safari

Edge

Opéra

Chrome pour Androïd

Safari sur IOS

Samsung Internet

UC Browser pour Androïd

Androïd Brower

Firefox pour Androïd

KaiOS Browser

Opéra mini

Évolution de la directive @font-feature-values.

  • Module CSS - Polices de caractères - Niveau 4

    Introduction de la directive @font-feature-values en rapport avec les possibilités des nouveaux formats de police de caractères : remplacement, ornements...
    WD
    11 Juillet 2017
    Document de travail.
    CR
    PR
    REC

Voir aussi, au sujet des polices de caractères.

La directive @font-feature-values est décrite dans la spécification CSS Fonts Module.
Ces autres définitions sont également présentées dans ce même module.

Propriétés :

font
Raccourci pour définir la plupart des propriétés concernant les polices de caractères.
font-effect
Permet d'appliquer quelques effets au texte : relief, bordure...
font-family
Sélectionne une police de caractères parmi celles qui sont disponibles ou celles qui sont téléchargées.
font-feature-settings
Permet d'exploiter les fonctionnalités spécifiques des polices de caractères OTF, WOFF, etc.
font-kerning
Ajustement du crénage entre caractères.
font-language-override
Définit le langage à prendre en compte lors du choix des caractères.
font-optical-sizing
Optimise la forme des caractères en fonction de leur taille.
font-palette
Définit la palette de couleurs utilisable pour les polices de caractères colorées.
font-size
Ajuste la taille des caractères, ce qui impacte aussi les units comme em, ex, etc.
font-size-adjust
Définition du coefficient d'aspect de la police.
font-smooth
Définit si un algorithme de lissage doit être utilisé et lequel.
font-stretch
Modifie l'étirement ou la compression des caractères.
font-style
Sélectionne les styles italique ou oblique de la police de caractères.
font-synthesis
Autorise ou non le calcul des styles manquants dans la police de caractères.
font-synthesis-position
Autorise ou non le navigateur à synthétiser les caractères en exposant ou en indice.
font-synthesis-small-caps
Autorise ou non le navigateur à calculer le glyphes des caractères en petites capitales.
font-synthesis-style
Définit si le navigateur est autorisé à synthétiser les formes italiques des caractères.
font-synthesis-weight
Définit si le navigateur peut calculer ou non le glyphe des caractères gras.
font-variant
Raccourci permettant de définir les attributs typographiques évolués : ligatures, substitution de caractères, etc.
font-variant-alternates
Définit la substitution de caractères (polices OTF, WOFF).
font-variant-caps
Applique une capitalisation des caractères.
font-variant-east-asian
Typographie spécifique aux caractères chinois ou japonais.
font-variant-emoji
Choisit entre une présentation en emoji ou en texte.
font-variant-ligatures
Active ou désactive la ligature des caractères.
font-variant-numeric
Définit le mode d'affichage des nombres évolués : fractions, numéros, etc.
font-variant-position
Mise en exposant ou en indice des caractères.
font-variation-settings
Donne accès aux possibilités stylistiques des polices OTF.
font-weight
Sélectionne une graisse pour les caractères.
font-width
Synonyme de font-stretch (largeur/élargissement des caractères).

Fonctions :

palette-mix()
Établit le mélange de deux palettes de couleurs issus de deux polices de caractères différentes.

Directives :

@font-face
Définit tous les paramètres d'une police de caractères téléchargeable.
@font-palette-values
Définit une palette de couleurs applicable ensuite à une police de caractères.

Descripteurs :

ascent-override
Descripteur pour @font-face. Définit la hauteur des caractères au dessus de la ligne de base.
descent-override
Descripteur pour @font-face. Définit la hauteur des caractères au dessous de la ligne de base.
font-display
Descripteur pour @font-face. Détermine le comportement du navigateur face aux polices de caractères longues à charger.
line-gap-override
Descripteur pour @font-face. Définit l'interligne de la police.
src
Définit la source d'un fichier de police de caractères à télécharger, ou d'une image à afficher.
unicode-range
Descripteur pour @font-face. Définit la plage des codes de caractères à télécharger dans une police.