Font-variant-alternates - Propriété CSS

font-variant-alternates

Résumé des caractéristiques de la propriété font-variant-alternates

Description rapide
Définit la substitution de caractères (polices OTF, WOFF).
Statut
Standard
Utilisable sur
HTML
Valeurs prédéfinies
normal | historical-forms | annotation(ann) | character-variant(cv01) | ornaments(ornm) | styleset(ss) | stylistic(styl) | swash(swsh)
Pourcentages
Ne s'appliquent pas.
Valeur initiale
normal
Héritée par défaut
Oui.
Type d'animation
Discrète : lors d'une animation, la propriété font-variant-alternates passe d'une valeur à l'autre sans transition.
Module W3C
Module CSS - Polices de caractères
Références (W3C)
Statut du document: WD (document de travail)

Syntaxe de font-variant-alternates (schéma).

Font-variant-alternates property - Syntax diagramSyntax diagram of the font-variant-alternates CSS property. See stylescss.free.fr for details. normal normal historical-forms historical-forms stylistic(...) stylistic(...) styleset(...) styleset(...) character-variant(...) character-variant(...) swash(...) swash(...) ornaments(...) ornaments(...) annotation(...) annotation(...)font-variant-alternates:;font-variant-alternates:;
Schéma syntaxique de la propriété font-variant-alternates.
Détails sur les valeurs.
Télécharger le schéma en SVG

Description de la propriété font-variant-alternates.

Cette propriété présente de gros problèmes de prise en charge. Il est encore tôt pour l'utiliser (2022).

Quoiqu'il en soit font-variant-alternates sera toujours dépendante des polices utilisées.

De nombreuses polices de caractères proposent souvent plusieurs glyphes pour chacun des caractères. Il y a le glyphe standard, mais aussi la variante ornée, la version historique (old style), la version stylistique, etc. font-variant-alternates permet de choisir quelle variante doit être utilisée.

Malheureusement il n'y a aucune règle qui impose la dénomination ou l'ordre de ces variantes dans la police de caractères. On ne peut donc pas écrire de règle CSS qui sélectionnerait la variante numéro 1, ou la variante numéro 3, car d'une police à l'autre ces variantes (si elles existent) ne seraient pas forcément équivalentes.

Pour cette raison font-variant-alternates travaille en collaboration avec la directive @font-feature-values :

  • @font-feature-values nomme les variantes que l'ont souhaite utiliser en indiquant leur famille et leur emplacement dans la police choisie.
  • font-variant-alternates applique ces variantes nommées aux éléments du document HTML.

Les variantes restent malgré tout classées par familles : historiques, ornées, stylistiques, etc. Le mieux est d'expliquer tout ça sur un exemple.

Dans le code ci-dessous, la première directive @font-face indique le nom de la police (Countryside) et où la télécharger.
La deuxième directive (@font-feature-values) indique que, pour cette police Countryside, la variante que nous appelons "belles-boucles" est la première des variantes de la famille swash.
Enfin la propriété font-variant-alternates est utilisée pour appliquer cette variante "belles-boucles" à l'élément dont l'ID est "exemple1".

@font-face{ font-family:'Countryside'; src:url('fonts/countryside.ttf'); } @font-feature-values Countryside { @swash {belles-boucles: 1;} } #exemple1 { font-family: 'Countryside', fantasy; font-variant-alternates: swash(belles-boucles); }

Ce qui donne le résultat ci-dessous (finalement assez peu lisible 😉 mais sans contexte avec de belles boucles).

Belles boucles n'est ce pas ?

Pour l'instant (2022), seul Firefox traite correctement font-variant-alternates et les directives associées. Il se peut donc que vous ne voyiez rien de plus qu'une police fantaisie dans le cadre ci-dessus. Mais voici une copie d'écran de ce qu'il faudrait obtenir avec un navigateur compatible.

Exemple avec font-variant-alternates
(simulation)

 

Pour compléter ces explications, reportez-vous aux pages sur les directives @font-face et @font-feature-values.

Valeurs pour font-variant-alternates.

  • font-variant-alternates: normal;

    Valeur par défaut. Aucun traitement typographique n'est effectué. Ce sont les glyphes des caractères standards qui sont utilisés.

  • font-variant-alternates: historical-forms;

    Active la variante historique. Il s'agit en général de caractères dont la forme rappelle les anciens caractères d'imprimerie. Notez qu'il n'y a pas lieu ici de préciser le nom de la variante historique et donc, qu'une déclaration avec @font-feature-values n'est pas nécessaire.

    Cette syntaxe est équivalente à font-feature-settings:'hist'

  • font-variant-alternates: annotation(nom1);

    Active une des variantes de la famille "annotation", celle dont le nom est nom1.

    Les variantes du type annotation sont des caractères utilisables pour des numérotations (lettres ou chiffres entourés par exemple).

    Le même effet peut être obtenu avec la propriété font-feature-settings:'nalt'

  • font-variant-alternates: character-variant(nom1);

    Active une des variantes de la famille "character-variant", celle dont le nom est nom1.

    Ces variantes permettent généralement d'afficher des caractères spécifiques, par exemple pour faciliter leur saisie alors qu'ils ne sont pas accessibles au clavier. Cela correspond aux codes Open Type cv01, cv02, etc.

    Le même effet peut être obtenu avec la propriété font-feature-settings:'cv01' (ou cv02, cv03, etc. jusqu'à cv99).

  • font-variant-alternates: ornaments(nom1);

    Active une des variantes de la famille "ornaments", celle dont le nom défini par @font-feature-values est nom1.

    Les ornements sont des éléments graphiques tels que des fleurons, des filets, des puces, etc. Certaines polices proposent toute une liste d'ornements pour agrémenter une composition.

    Les ornements peuvent être affichés aussi avec la propriété font-feature-settings:'ornm'

  • font-variant-alternates: styleset(nom1);

    Active une des variantes de la famille "styleset", celle dont le nom est nom1.

    Les variantes styleset peuvent également être affichées avec la propriété font-feature-settings:'ss01' (ou ss02, ss03, etc. jusqu'à ss20).

  • font-variant-alternates: stylistic(nom1);

    Active une des variantes de la famille "stylistique", celle dont le nom est nom1.

    Ces variantes peuvent aussi être affichées avec la propriété font-feature-settings:'salt'

  • font-variant-alternates: swash(nom1);

    Active une des variantes de la famille "swash", celle dont le nom défini par @font-feature-values est nom1.

    Ces variantes correspondent généralement à des caractères très ornés, avec des boucles supplémentaires, des crochets, etc.

    Les variantes ornées peuvent aussi être affichées avec font-feature-settings:'swsh'

  • font-variant-alternates: swash(nom1) stylistic(nom1);

    Comme on le voit sur cet exemple de syntaxe, il est possible de cumuler plusieurs variantes en les séparant par un espace.

  • font-variant-alternates: initial; (normal) font-variant-alternates: inherit; font-variant-alternates: revert; font-variant-alternates: revertLayer; font-variant-alternates: unset;

    Liens vers la présentation de ces différentes valeurs : initial, inherit, revert, revert-layer, unset.

Possibilité d'animation de la propriété font-variant-alternates.

Le cadre ci-dessous montre ce que donne l'Possibilité d'animation de la propriété font-variant-alternates. L'effet est finalement plus intéressant lorsque l'animation se fait entre deux variantes très peu différentes.

Animation

Simulateur avec la propriété font-variant-alternates.

Le simulateur active les glyphes alternatifs de la police, dans la mesure où ils existent. Tous les identifiants (ann, char, hist, etc.) ont été définis par une directive @font-feature-values.

Police :
font-variant-alternates :
Portez ce vieux Whisky au juge blond qui fume

Support de font-variant-alternates.

La prise en charge de la propriété font-variant-alternates est encore trop limitée (2022), même sur les navigateurs les plus courants.

Colonne 1
Capacité des navigateurs à contrôler les glyphes alternatifs pour certaines polices de caractères.

Remarques :

(1) Utiliser la propriété de bas niveau font-feature-settings avec les codes salt, ss01 à ss20, swsh, etc.

1
Propriété
font-variant-alternates
Estimation de la prise en charge globale.
93%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

UC Browser pour Androïd

Opéra Mobile

QQ Browser

Baidu Browser

Samsung Internet

Firefox

Safari

Safari sur IOS

Chrome

Opéra

Edge

Chrome pour Androïd

Firefox pour Androïd

Androïd Brower

KaiOS Browser

Opéra mini

Évolution de la propriété font-variant-alternates.

Voir aussi, à propos des polices de caractères.

La propriété font-variant-alternates, ainsi que toutes celles concernant les polices de caractères sont regroupées dans le module CSS Fonts Module. Vous trouvez les définitions suivantes dans ce 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-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-feature-values
Définit les variantes typographiques à utiliser.
@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.