Font-variant-numeric - Propriété CSS

font-variant-numeric

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

Description rapide
Définit le mode d'affichage des nombres évolués : fractions, numéros, etc.
Statut
Standard
Utilisable sur
HTML
Valeurs prédéfinies
normal | ordinal | slashed-zero | lining-nums | oldstyle-nums | proportional-nums | tabular-nums | diagonal-fractions | stacked-fractions
Pourcentages
Ne s'appliquent pas.
Valeur initiale
normal
Type d'animation
Discrète : lors d'une animation, la propriété font-variant-numeric 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)

Statut du document: REC (recommandation)

Schéma syntaxique de font-variant-numeric.

Font-variant-numeric property - Syntax diagramSyntax diagram of the font-variant-numeric CSS property. See stylescss.free.fr for details. normal normal lining-nums lining-nums oldstyle-nums oldstyle-nums proportional-nums proportional-nums tabular-nums tabular-nums diagonal-fractions diagonal-fractions stacked-fractions stacked-fractions ordinal ordinal slashed-zero slashed-zerofont-variant-numeric:;font-variant-numeric:;
Schéma syntaxique de la propriété font-variant-numeric
Les liens du schéma donnent accès à plus de détails
Télécharger le schéma en SVG

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

font-variant-numeric définit les paramètres d'affichage évolués pour les nombres, comme par exemple la présentation des fractions, des numéros d'ordre, etc. Cette propriété fonctionne uniquement avec certaines polices OTF.

Pour une présentation plus complète des possibilités offertes par les polices OTF et de leur utilisation avec une syntaxe de bas niveau, reportez-vous à la propriété font-feature-settings.
Consultez également la propriété raccourcie font-variant.

Syntaxes pour font-variant-numeric.

La police de caractères utilisée pour les exemples est Comic Jens diffusée en Creative Common (copyright Jens Kutilek).

Les exemples utilisés pour illustrer les syntaxes sont des simulations afin d'être lisibles même sur les navigateurs qui ne traitent pas font-variant-numeric, et d'autre part, parce qu'il est difficile de trouver des polices qui offrent toutes ces possibilités.

  • font-variant-numeric: normal;

    Valeur par défaut. les chiffres sont affichés avec leur glyphe standard, sans mise en forme particulière.

    Valeur normal pour font-variant-numeric
  • font-variant-numeric: ordinal;

    Les numéros d'ordre, tels que 1a, 2a, mais aussi les symboles No, no, etc. sont remplacés par les caractères 1a, 2a, No, no, etc.

    On peut obtenir un effet comparable avec la balise HTML sup mais il est nécessaire d'appliquer cette balise précisément sur la partie du nombre qui doit être en exposant, tandis que la valeur ordinal peut être appliquée sur l'ensemble du texte, la détection des caractères à mettre en exposant est automatique.

    Les caractères ordinaux français (1er, 2ème, etc.) ne sont traités par aucune police à notre connaissance.

    La valeur ordinal correspond à font-feature-settings:'ordn'.

    Valeur ordinal pour font-variant-numeric
  • font-variant-numeric: slashed-zero;

    Les zéros sont barrés ( Ø ). C'est utile lorsqu'il faut éviter toute confusion entre le chiffre 0 et la lettre O.

    Cette fonctionnalité n'est pas si couramment reconnue, mais il existe plusieurs autres méthodes pour obtenir un zéro barré :

    • Utiliser le caractère zéro de la police générique monospace : 0.
    • Utiliser le caractère dont le code hexadécimal est D8 (216 en décimal) : Ø.
    • Utiliser l'entité html Ø : Ø.

    La valeur slashed-zero correspond à font-feature-settings:'zero'.

    Valeur slashed-zero pour font-variant-numeric
  • font-variant-numeric: lining-nums;

    Les chiffres ont tous la même hauteur et sont tous positionnés sur la même ligne de base. Cette valeur est le contraire de oldstyle-nums.

    La valeur lining-nums correspond à font-feature-settings:'lnum'.

    Valeur lining-nums pour font-variant-numeric
  • font-variant-numeric: oldstyle-nums;

    Les chiffres sont positionnés à des hauteurs différentes sur la ligne, t peuvent également avoir des hauteur différentes. ce qui donne un effet un peu rétro. Cette valeur est le contraire de lining-nums.

    La valeur oldstyle-nums correspond à font-feature-settings:'onum'.

    Valeur oldstyle-nums pour font-variant-numeric
  • font-variant-numeric: proportional-nums;

    La largeur de chacun des chiffres est ajustée en fonction de sa forme (le 1 est plus étroit que le 8). L'esthétique du texte est améliorée mais les nombres présentés en colonne ne sont pas alignés verticalement. Cette valeur est le contraire de tabular-nums.

    La valeur proportional-nums correspond à font-feature-settings:'pnum'.

    Valeur proportional-nums pour font-variant-numeric
  • font-variant-numeric: tabular-nums;

    La largeur de chacun des chiffres est identique. Cette option est intéressante lorsque les nombres sont présentés en colonne et que l'on souhaite un alignement vertical des chiffres. Cette valeur est le contraire de proportional-nums.

    La valeur tabular-nums correspond à font-feature-settings:'tnum'.

    Valeur tabular-nums pour font-variant-numeric
  • font-variant-numeric: stacked-fractions;

    Deux nombres séparés par un slash (/) sont affichés sous la forme d'une fraction, avec un trait horizontal. Cette valeur est incompatible avec diagonal-fractions.

    La valeur stacked-fractions correspond à font-feature-settings:'afrc'.

    Valeur stacked-fractions pour Font-variant-numeric
  • font-variant-numeric: diagonal-fractions;

    Deux nombres séparés par un caractère slash (/) sont affichés sous la forme d'une fraction, avec un trait oblique entre les deux. Cette valeur est incompatible avec stacked-fractions.

    La valeur diagonal-fractions correspond à font-feature-settings:'frac'.

    Valeur diagonal-fractions pour Font-variant-numeric

Valeurs standards acceptées par toutes les propriétés:

font-variant-numeric: initial (normal) font-variant-numeric: inherit font-variant-numeric: revert font-variant-numeric: revertLayer font-variant-numeric: unset

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

Animation de la propriété font-variant-numeric.

L'exemple ci-dessous montre que l'animation de font-variant-numeric est possible, même si son intérêt est limité.

Remarque : la propriété font-variant-numeric est appliquée sur les mots No et 2eme. L'appliquer sur toute la phrase donne un résultat farfelu.
D'autre part, nous avons dû écrire 2eme sans accent, car l'accent perturbe le fonctionnement.

Le dossard No28 est arrivé 2eme

Manipulation de la propriété font-variant-numeric avec Javascript.

Changement de la valeur de font-variant-numeric avec Javascript.

On voit que Javascript propose une syntaxe avec la notation typique de CSS, en kebab-case (un tiret pour séparer les mots), et une autre syntaxe avec la notation en camel-case (une majuscule pour séparer les mots).

Javascript
let el = document.getElementById('id'); el.style['font-variant-numeric'] = 'lining-nums'; // ou let el = document.getElementById('id'); el.style.fontVariantNumeric = 'lining-nums';

Récupération de la valeur de font-variant-numeric avec Javascript.

La propriété doit avoir été affectée directement à l'élément lui-même via son attribut style, et pas en passant par un sélecteur CSS.

Javascript
let el = document.getElementById('id'); let value = el.style['font-variant-numeric']; // ou let el = document.getElementById('id'); let value = el.style.fontVariantNumeric;

Récupération de la valeur calculée de font-variant-numeric.

La valeur calculée est celle qui résulte de la cascade des héritages. A défaut, la valeur calculée est la valeur initiale de la propriété (normal dans le cas de font-variant-numeric).

Javascript
let el = document.getElementById('id'); let value = window.getComputedStyle(el).getPropertyValue('font-variant-numeric');

Changement de la valeur de font-variant-numeric avec JQuery.

JQuery

$('#id').css('font-variant-numeric', 'lining-nums');
// ou
$('#id').css('fontVariantNumeric', 'lining-nums');

Récupération de la valeur calculée de font-variant-numeric avec JQuery.

JQuery
let value = $('#id').css('font-variant-numeric');

Testez vous-même.

Les boutons ci-dessous appliquent la valeur saisie à la propriété font-variant-numeric et affichent ensuite soit la valeur telle qu'elle a été appliquée, soit la valeur calculée. Cette deuxième option permet de voir comment est mémorisée (sérialisée) la valeur de font-variant-numeric. Dans le cas de font-variant-numeric, la valeur calculée est la même que la valeur saisie car cette propriété n'accepte que des valeurs prédéfinies.

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

Le simulateur ci-dessous permet de tester les différentes valeurs pour la propriété font-variant-numeric avec plusieurs polices. On voit que le résultat est très dépendant de la police :

  • La police monospace affiche des zéros barrés quelque soit la valeur de font-variant-numeric. Le traitement de la valeur ordinal semble correct sur cet exemple très simple, mais il convient de l'appliquer de façon très spécifique mot par mot.
  • Le traitement des fractions est différent d'une police à l'autre.
PoliceOrdinalzéros
barrés
old-styleTabulairefractions
serif OKOKOK
sans-serif OKOKOK
monospace OK OK
cursive OKOK
Dancing Script OK
Fira Sans OKOK

Police :

font-variant-numeric :

1er   1st   2ème   No   no   9a
1200   458   1114
8540   710   8437
3/4   240/1000   7/22

Prise en charge et compatibilité des navigateurs.

La propriété font-variant-numeric apporte de nouvelles possibilités d'affichage des nombres. La prise en charge est maintenant correcte sur la plupart des navigateurs.

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

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

KaiOS Browser

Opéra Mobile

Opéra

Safari

Safari sur IOS

Firefox pour Androïd

Samsung Internet

Chrome

Edge

Firefox

Androïd Brower

Chrome pour Androïd

Baidu Browser

QQ Browser

UC Browser pour Androïd

Opéra mini

Historique de la propriété font-variant-numeric.

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

La spécification CSS Fonts Module regroupe tout ce qui concerne les polices de caractères, la typographie, l'exploitation des possibilités des formats de polices modernes, le téléchargement de polices, etc.

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-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.