Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Propriété CSS font

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

La propriété raccourcie CSS font permet de définir toutes les différentes propriétés de la police d'un élément. Elle permet aussi d'attribuer à un élément une police système.

Exemple interactif

font:
  1.2rem "Fira Sans",
  sans-serif;
font:
  italic 1.2rem "Fira Sans",
  serif;
font: italic small-caps bold 16px/2 cursive;
font: small-caps bold 24px/1 sans-serif;
font: caption;
<section id="default-example">
  <q id="example-element">
    Comme chacun sait, les préjugés sont particulièrement difficiles à éradiquer
    d'un cœur dont le sol n'a jamais été ameubli ni fertilisé par
    l'éducation&nbsp;: ils y poussent, tenaces comme des mauvaises herbes parmi
    les pierres.
  </q>
</section>
@font-face {
  font-family: "Fira Sans";
  src:
    local("FiraSans-Regular"),
    url("/shared-assets/fonts/FiraSans-Regular.woff2") format("woff2");
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: "Fira Sans";
  src:
    local("FiraSans-Italic"),
    url("/shared-assets/fonts/FiraSans-Italic.woff2") format("woff2");
  font-weight: normal;
  font-style: italic;
}

section {
  margin-top: 10px;
  font-size: 1.1em;
}

Comme pour les autres propriétés CSS, les valeurs qui ne sont pas définies avec la propriété raccourcie sont définies avec leur valeur initiale, ce qui peut surcharger les valeurs définies précédemment avec les propriétés « détaillées ». Bien qu'elles ne puissent pas directement être paramétrées avec font, les propriétés détaillées, font-size-adjust, et font-kerning sont également réinitialisées avec leurs valeurs initiales.

Propriétés constitutives

Cette propriété est une propriété raccourcie pour les propriétés CSS suivantes :

Syntaxe

css
/* font-size font-family */
font: 1.2em sans-serif;

/* font-size/line-height font-family */
font: 1.2em/2 "Fira Sans", sans-serif;

/* font-style font-weight font-size font-family */
font: italic bold 1.2em monospace;

/* font-width font-variant font-size font-family */
font: ultra-condensed small-caps 1.2em Montserrat, Helvetica, sans-serif;

/* Polices système */
font: caption;

Valeurs

La valeur est soit une propriété raccourcie définissant les différentes propriétés liées aux polices, soit un seul mot-clé <system-font-family-name> :

<'font-style'> Facultatif

Voir la propriété CSS font-style. Par défaut, normal.

<font-variant-css2> Facultatif

Soit la valeur normal, soit la valeur small-caps de la propriété CSS font-variant. Par défaut, normal.

<'font-weight'> Facultatif

Voir la propriété CSS font-weight. Par défaut, normal.

<font-width-css3> Facultatif

Les mots-clés pris en charge par la propriété CSS font-width. Par défaut, normal.

<'font-size'>

Voir la propriété CSS font-size.

<'line-height'> Facultatif

Voir la propriété CSS line-height. Par défaut, normal.

<'font-family'>

Voir la propriété CSS font-family. Doit être la dernière valeur.

<system-font-family-name>

Un mot-clé unique représentant une police système, y compris :

caption

La police système utilisée pour les contrôles avec légende (boutons, menus déroulants, etc.).

icon

La police système utilisée pour étiqueter les icônes.

La police système utilisée dans les menus (par exemple, les menus déroulants et les listes de menus).

message-box

La police système utilisée dans les boîtes de dialogue.

small-caption

La police système utilisée pour étiqueter les petits contrôles.

status-bar

La police système utilisée dans les barres d'état des fenêtres.

Il existe plusieurs valeurs non standard implémentées avec des préfixes.

Description

La valeur de la propriété font est soit un mot-clé unique représentant un system-font-family-name, soit plusieurs valeurs de propriétés individuelles utilisées pour définir toutes les différentes propriétés de la police d'un élément.

Déclarations de polices système

Si font est défini comme un mot-clé <system-font-family-name>, la valeur complète de la propriété doit être définie sur ce mot-clé unique, insensible à la casse. Les valeurs valides incluent caption, icon, menu, message-box, small-caption ou status-bar.

Les navigateurs prennent également en charge des valeurs non standard avec des préfixes.

  • Chromium implémente -webkit-control, -webkit-small-control et -webkit-mini-control.
  • Webkit inclut les valeurs de Chromium, et ajoute -webkit-body, -webkit-pictograph et -webkit-ruby-text, ainsi que plusieurs noms de polices système préfixés par -apple-system-*.
  • Gecko implémente -moz-window, -moz-document, -moz-desktop, -moz-info, -moz-dialog, -moz-button, -moz-pull-down-menu, -moz-list et -moz-field.

La police système, ou <system-font-family-name>, ne peut être définie qu'avec la propriété font. La définition d'une seule valeur de mot-clé, telle que font: icon, définit la famille, la taille, le poids, le style, etc., de la police sur les valeurs que le navigateur définit pour la police système nommée. Toutes ces valeurs peuvent être modifiées avec des déclarations en propriété longue placées après la déclaration font.

Inclure des composants en propriété longue font après le mot-clé <system-font-family-name> dans une valeur de propriété font invalide la déclaration. Par exemple, font: icon small est invalide.

Si un mot-clé <system-font-family-name> apparaît n'importe où dans la valeur autre que comme premier composant, le mot-clé est traité comme un <ident> représentant un nom de font-family standard. Par exemple, la déclaration font: small icon définit la font-family sur une police nommée icon, une police non système qui peut ou non exister. Cette déclaration définit également la font-size sur small et réinitialise toutes les autres propriétés de composant en propriété longue à leurs valeurs initiales.

Déclarations raccourcies de polices

Si font est défini comme une déclaration raccourcie pour plusieurs propriétés liées aux polices, alors :

Comme pour toute propriété raccourcie, toutes les propriétés détaillées non définies sont définies à leurs valeurs initiales, ce qui peut éventuellement remplacer les valeurs précédemment définies à l'aide de propriétés non raccourcies. De plus, la propriété raccourcie réinitialise les propriétés suivantes à leurs valeurs initiales. La propriété raccourcie ne peut pas les définir explicitement :

Ordre de la propriété raccourcie

L'ordre de certaines des valeurs détaillées au sein de la déclaration raccourcie font doit suivre quelques règles :

  • Les composants font-size et font-family sont obligatoires (sauf pour les déclarations de police système).
  • Les composants font-style, font-variant et font-weight doivent précéder la valeur font-size.
  • Une line-height ne peut être incluse que si font-size est incluse. Si elle est présente, la line-height doit suivre immédiatement le font-size, les deux valeurs étant séparées par une barre oblique (/), par exemple : 16px / 3.
  • La font-family doit être la dernière valeur définie.

Composants avec des valeurs limitées

Pour des raisons de compatibilité, les valeurs valides des composants font-variant et font-width n'incluent pas toutes les valeurs valides ni les équivalents détaillés.

Les valeurs valides pour le composant font-variant sont limitées à normal ou small-caps. Bien qu'aucune autre valeur ne soit prise en charge, la déclaration raccourcie font réinitialise toutes les propriétés détaillées font-variant-* à normal, y compris font-variation-settings, font-variant-position, font-variant-emoji, font-variant-caps, font-variant-ligatures, font-variant-numeric, font-variant-east-asian et font-variant-alternates.

Les valeurs valides pour le composant font-width sont limitées aux mots-clés : normal, ultra-condensed, extra-condensed, condensed, semi-condensed, semi-expanded, expanded, extra-expanded, ultra-expanded. La propriété détaillée font-width prend également en charge les valeurs <percentage>, mais elles ne sont pas valides dans la déclaration raccourcie.

Définition formelle

Valeur initialepour chaque propriété individuelle de la propriété raccourcie :
Applicabilitétous les éléments et le texte. S'applique aussi à ::first-letter et ::first-line.
Héritéeoui
Pourcentagespour chaque propriété individuelle de la propriété raccourcie :
  • font-size: se rapporte à la taille de la police de l'élément parent
  • line-height: se rapporte à la taille de la police de l'élément lui-même
Valeur calculéepour chaque propriété individuelle de la propriété raccourcie :
Type d'animationpour chaque propriété individuelle de la propriété raccourcie :

Syntaxe formelle

font = 
[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] |
<system-font-family-name>

<font-style> =
normal |
italic |
left |
right |
oblique <angle [-90deg,90deg]>?

<font-variant-css2> =
normal |
small-caps

<font-weight> =
<font-weight-absolute> |
bolder |
lighter

<font-width-css3> =
normal |
ultra-condensed |
extra-condensed |
condensed |
semi-condensed |
semi-expanded |
expanded |
extra-expanded |
ultra-expanded

<font-size> =
<absolute-size> |
<relative-size> |
<length-percentage [0,∞]> |
math

<line-height> =
normal |
<number [0,∞]> |
<length-percentage [0,∞]>

<font-family> =
[ <font-family-name> | <generic-font-family> ]#

<system-font-family-name> =
caption |
icon |
menu |
message-box |
small-caption |
status-bar

<font-weight-absolute> =
normal |
bold |
<number [1,1000]>

<absolute-size> =
xx-small |
x-small |
small |
medium |
large |
x-large |
xx-large |
xxx-large

<relative-size> =
larger |
smaller

<length-percentage> =
<length> |
<percentage>

<font-family-name> =
<string> |
<custom-ident>+

<generic-font-family> =
<generic-font-script-specific> |
<generic-font-complete> |
<generic-font-incomplete>

<generic-font-script-specific> =
generic( fangsong ) |
generic( kai ) |
generic( khmer-mul ) |
generic( nastaliq )

<generic-font-complete> =
serif |
sans-serif |
system-ui |
cursive |
fantasy |
math |
monospace

<generic-font-incomplete> =
ui-serif |
ui-sans-serif |
ui-monospace |
ui-rounded

Exemples

Utilisation simple

Cet exemple définit la police (font) pour tous les éléments HTML <p>. Nous définissons la taille de police (font-size) à 12px et la hauteur de ligne (line-height) à 14px, en les séparant par une barre oblique (/). La déclaration définit également la famille de police (font-family) à sans-serif.

css
p {
  font: 12px / 14px sans-serif;
}

Propriétés multiples

Dans cet exemple, nous définissons le font-weight à bold, le font-style à italic, le font-size à large, le line-height à 1.6 et le font-family à serif.

css
p {
  font: bold italic large / 1.6 serif;
}

Police système

Cet exemple montre comment utiliser la propriété font pour définir une police système.

CSS

Nous définissons la police du paragraphe pour qu'elle ait la même font-family, line-height, font-size, etc., que la barre d'état de la fenêtre, puis nous définissons le line-height à 1.6.

css
p {
  font: status-bar;
  line-height: 1.6;
}

HTML

Notre HTML inclut un paragraphe (<p>) contenant un lien (<a>) avec une valeur d'attribut href compliquée. Lorsque vous survolez ou sélectionnez le lien rendu, la barre d'état de votre navigateur doit afficher la valeur de l'attribut href.

html
<p>
  <a
    href="/%20The%20font%20should%20be%20the%20same%20
family%20and%20size%20and%20the%20text%20in%20the%20example."
    >Survolez ou sélectionnez ce texte. La police doit être de la même famille
    et de la même taille que le texte dans votre barre d'état.</a
  >
</p>

JavaScript

Comme l'URL dans notre lien HTML n'est pas une bonne pratique, nous incluons un script qui empêche le document de rediriger vers une page inexistante lorsque le lien est cliqué.

js
const aElem = document.querySelector("a");
aElem.addEventListener("click", (e) => {
  e.preventDefault();
  return false;
});

Résultat

Survolez ou sélectionnez le lien. La police doit être de la même famille et de la même taille que le texte dans votre barre d'état en bas de la fenêtre de votre navigateur.

Générateur de déclaration abrégée

Dans cette démonstration en direct, vous pouvez sélectionner différents boutons radio pour générer différentes valeurs abrégées, tout en visualisant les effets des déclarations abrégées que vous créez.

Spécifications

Spécification
CSS Fonts Module Level 4
# font-prop

Compatibilité des navigateurs

Voir aussi