Texte et typographie

The CSS Podcast - 036: Text & Typography

Le texte est l'un des principaux composants du Web.

Lorsque vous créez un site Web, vous n'avez pas nécessairement besoin de styliser votre texte. Le langage HTML propose en effet des styles par défaut assez raisonnables.

Cependant, le texte constituera probablement la majeure partie de votre site Web. Vous avez donc tout intérêt à lui ajouter un peu de style pour le peaufiner. En modifiant quelques propriétés de base, vous pouvez améliorer considérablement l'expérience de lecture de vos utilisateurs.

Dans ce module, nous commencerons par la règle @font-face, qui vous permet d'importer des polices personnalisées dans vos pages Web. Vous disposez ainsi de la typographie exacte dont vous avez besoin, indépendamment des polices installées par l'utilisateur.

Nous verrons ensuite les propriétés de police CSS essentielles, y compris font-family, font-style, font-weight et font-size. Ces principes de base préparent la manipulation du texte pour le style et la lisibilité.

Nous aborderons également des propriétés spécifiques aux paragraphes, comme text-indent et word-spacing, avant de conclure sur des sujets avancés tels que les polices variables et les pseudo-éléments, qui affinent davantage votre contrôle typographique.

Des exemples pratiques et des conseils vous seront fournis pour vous aider à mieux comprendre et appliquer ces techniques CSS.

La règle @font-face

La règle CSS @font-face est essentielle dans la conception Web. Elle vous permet de spécifier et d'utiliser des polices personnalisées pour afficher du texte. L'avantage de @font-face réside dans sa polyvalence: il vous permet de générer des polices à partir d'un serveur distant ou d'une police installée sur l'appareil de l'utilisateur.

Syntaxe

@font-face {
  font-family: "Trickster";
  src:
    local("Trickster"),
    url("trickster-COLRv1.otf") format("opentype") tech(color-COLRv1),
    url("trickster-outline.otf") format("opentype"),
    url("trickster-outline.woff") format("woff")
}

Descripteurs

ascent-override
Personnalisez la métrique "Ascension", ce qui a un impact sur l'espace au-dessus de la ligne de référence.
descent-override
Ajuste la métrique de descente, ce qui affecte l'espace sous la ligne de référence.
font-display
Contrôle le comportement d'affichage de la police en fonction de son état de téléchargement.
font-family
Nom de la police à utiliser dans les propriétés associées.
font-stretch
Définit un scaling horizontal acceptable, spécifié sous la forme d'une valeur ou d'une plage unique.
font-style
Définit le style de police, avec des plages d'angles compatibles pour les styles obliques.
font-weight
Définit l'épaisseur ou la plage d'épaisseurs disponibles de la police.
font-feature-settings
Active l'accès aux fonctionnalités des polices OpenType.
font-variation-settings
Permet de contrôler avec précision les paramètres de police variables.
line-gap-override
Ignore l'espacement des lignes par défaut de la police.
size-adjust
Applique un facteur de mise à l'échelle au contour et aux métriques de la police.
src
Définit la source de police, qu'elle soit locale ou distante. Cela est obligatoire pour la règle @font-face. Combiner url() et local() dans src est une stratégie courante qui utilise une police locale si elle est disponible, et revient à un fichier de police distant en cas de défaillance. Les navigateurs hiérarchisent les ressources en fonction de l'ordre de déclaration. local() doit donc généralement précéder url().
unicode-range
Limite les caractères pour lesquels cette police doit être utilisée.

Description

@font-face libère les concepteurs des contraintes des polices "Web-safe" en leur permettant d'utiliser une typographie personnalisée. La fonction local() peut rechercher une police sur l'appareil de l'utilisateur, ce qui offre une expérience fluide qui ne dépend pas nécessairement d'une connexion Internet.

Types de police MIME

Format Type MIME
TrueType font/ttf
OpenType font/otf
Format de police ouverte sur le Web font/woff
Web Open Font Format 2 font/woff2

Différence entre @font-face et font-family

En CSS, @font-face et font-family sont souvent confondus, mais ils ont des objectifs distincts.

Comme nous l'avons vu, @font-face est une règle utilisée pour définir les polices personnalisées que vous souhaitez utiliser dans votre application Web. Il indique au navigateur où télécharger la police, comment l'afficher lors du chargement (avec la propriété font-display) et spécifie le sous-ensemble de caractères à télécharger (avec unicode-range).

En revanche, font-family est une propriété CSS utilisée dans une règle CSS pour attribuer une police particulière ou une liste de polices à un élément. Les polices listées sous font-family peuvent être des polices Web-safe, des polices système ou des polices personnalisées définies avec @font-face.

Pour résumer, @font-face déclare une police et lui attribue un nom, puis font-family applique cette police déclarée aux éléments HTML.

Voici un exemple d'utilisation des deux :

<table>
  <thead>
    <tr>
      <th><p><pre>
@font-face {
  font-family: "CustomFont";
  src: url("customfont.woff2") format("woff2");
}

body {
  font-family: "CustomFont", Arial, sans-serif;
}

Dans cet exemple, @font-face définit "CustomFont" et indique au navigateur où la trouver. La propriété font-family l'applique ensuite à l'élément body, avec Arial comme solution de secours si "CustomFont" n'est pas disponible.

Modifier la typographie

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 1.
  • Safari : 1.

Source

Utilisez font-family pour modifier la police de votre texte.

La propriété font-family accepte une liste de chaînes séparées par une virgule, faisant référence à des familles de polices spécifiques ou génériques. Les familles de polices spécifiques sont des chaînes entre guillemets, telles que "Helvetica", "EB Garamond" ou "Times New Roman". Les familles de polices génériques sont des mots clés tels que serif, sans-serif et monospace (consultez la liste complète des options sur MDN). Le navigateur affiche la première police disponible dans la liste fournie.

Lorsque vous utilisez font-family, vous devez spécifier au moins une famille de polices génériques au cas où le navigateur de l'utilisateur ne disposerait pas de vos polices préférées. En général, la famille de polices générique de remplacement doit être semblable à vos polices préférées : si vous utilisez font-family: "Helvetica" (une famille de polices sans serif), votre police de remplacement doit être sans-serif.

Utiliser des polices italiques et obliques

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 1.
  • Safari : 1.

Source

Utilisez font-style pour indiquer si le texte doit être en italique ou non. font-style accepte l'un des mots clés suivants : normal, italic et oblique.

Mettre le texte en gras

Navigateurs pris en charge

  • Chrome : 2.
  • Edge: 12
  • Firefox : 1.
  • Safari: 1.

Source

Utilisez font-weight pour définir l'épaisseur du texte. Cette propriété accepte des valeurs de mot clé (normal, bold), des valeurs de mots clés relatives (lighter, bolder) et des valeurs numériques (100 à 900).

Les mots clés normal et bold sont respectivement équivalents aux valeurs numériques 400 et 700.

Les mots clés lighter et bolder sont calculés par rapport à l'élément parent. Consultez la page Signification des pondérations relatives de MDN pour obtenir un graphique pratique expliquant comment cette valeur est déterminée.

Modifier la taille du texte

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 1.
  • Safari : 1.

Source

Utilisez font-size pour contrôler la taille de vos éléments textuels. Cette propriété accepte des valeurs de longueur, des pourcentages et quelques valeurs de mot clé.

En plus des valeurs de longueur et de pourcentage, font-size accepte certaines valeurs de mot clé absolues (xx-small, x-small, small, medium, large, x-large, xx-large) et quelques valeurs de mot clé relatives (smaller, larger). Les valeurs relatives sont relatives à l'font-size de l'élément parent.

Modifier l'espacement entre les lignes

Navigateurs pris en charge

  • Chrome: 1.
  • Edge: 12
  • Firefox : 1.
  • Safari : 1.

Source

Utilisez line-height pour spécifier la hauteur de chaque ligne d'un élément. Cette propriété accepte un nombre, une longueur, un pourcentage ou le mot clé normal. En règle générale, il est recommandé d'utiliser un nombre au lieu d'une longueur ou d'un pourcentage pour éviter les problèmes d'héritage.

Modifier l'espace entre les caractères

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 1.
  • Safari: 1.

Source

Utilisez letter-spacing pour contrôler la quantité d'espace horizontal entre les caractères de votre texte. Cette propriété accepte des valeurs de longueur telles que em, px et rem.

Notez que la valeur spécifiée augmente l'espace naturel entre les caractères. Dans la démonstration suivante, essayez de sélectionner une lettre individuelle pour voir la taille de sa zone de défilement et comment elle change avec letter-spacing.

Modifier l'espace entre les mots

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 1.
  • Safari : 1.

Source

Utilisez word-spacing pour augmenter ou réduire la longueur de l'espace entre chaque mot de votre texte. Cette propriété accepte des valeurs de longueur telles que em, px et rem. Notez que la longueur que vous spécifiez correspond à un espace supplémentaire en plus de l'espace normal. Cela signifie que word-spacing: 0 équivaut à word-spacing: normal.

Abréviation font

Vous pouvez utiliser la propriété abrégée font pour définir plusieurs propriétés liées aux polices à la fois. La liste des propriétés possibles est la suivante : font-family, font-size, font-stretch, font-style, font-variant, font-weight et line-height.

Consultez l'article font de MDN pour savoir comment organiser ces propriétés.

Modifier la casse du texte

Navigateurs pris en charge

  • Chrome: 1.
  • Edge: 12
  • Firefox: 1.
  • Safari : 1.

Source

Utilisez text-transform pour modifier la casse de votre texte sans avoir à modifier le code HTML sous-jacent. Cette propriété accepte les valeurs de mot clé suivantes : uppercase, lowercase et capitalize.

Ajouter des traits de soulignement, des traits d'union et des traits de soulignement au texte

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 1.
  • Safari: 1.

Source

Utilisez text-decoration pour ajouter des lignes à votre texte. Les traits de soulignement sont les plus couramment utilisés, mais il est possible d'ajouter des lignes au-dessus de votre texte ou directement au-dessus de celui-ci.

La propriété text-decoration est un raccourci pour les propriétés plus spécifiques détaillées ci-dessous.

La propriété text-decoration-line accepte les mots clés underline, overline et line-through. Vous pouvez également spécifier plusieurs mots clés pour plusieurs lignes.

La propriété text-decoration-color définit la couleur de toutes les décorations à partir de text-decoration-line.

La propriété text-decoration-style accepte les mots clés solid, double, dotted, dashed et wavy.

La propriété text-decoration-thickness accepte toutes les valeurs de longueur et définit la largeur du trait de toutes les décorations à partir de text-decoration-line.

La propriété text-decoration est un raccourci pour toutes les propriétés ci-dessus.

Ajouter un retrait à votre texte

Navigateurs pris en charge

  • Chrome : 1.
  • Edge: 12
  • Firefox : 1.
  • Safari: 1.

Source

Utilisez text-indent pour ajouter un retrait à vos blocs de texte. Cette propriété prend une longueur (par exemple, 10px, 2em) ou un pourcentage de la largeur du bloc contenant.

Gérer les problèmes de contenu trop long ou masqué

Navigateurs pris en charge

  • Chrome: 1.
  • Edge: 12
  • Firefox : 7.
  • Safari : 1.3.

Source

Utilisez text-overflow pour spécifier comment le contenu masqué est représenté. Deux options sont disponibles: clip (par défaut), qui tronque le texte au point de débordement, et ellipsis, qui affiche des points de suspension (...) en point de débordement.

Contrôler l'espace blanc

Navigateurs pris en charge

  • Chrome: 1.
  • Edge: 12
  • Firefox : 1.
  • Safari : 1.

Source

La propriété white-space permet de spécifier comment les espaces blancs d'un élément doivent être gérés. Pour en savoir plus, consultez l'article white-space sur MDN.

white-space: pre peut être utile pour afficher de l'art ASCII ou des blocs de code soigneusement mis en retrait.

Contrôler la coupure des mots

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 15.
  • Safari : 3.

Source

Utilisez word-break pour modifier la façon dont les mots doivent être "coupés" lorsqu'ils débordent la ligne. Par défaut, le navigateur ne divise pas les mots. Si vous utilisez la valeur de mot clé break-all pour word-break, le navigateur sera invité à couper les mots en caractères individuels si nécessaire.

Modifier l'alignement du texte

Navigateurs pris en charge

  • Chrome : 1.
  • Edge: 12
  • Firefox : 1.
  • Safari: 1.

Source

Utilisez text-align pour spécifier l'alignement horizontal du texte dans un élément de bloc ou de cellule de tableau. Cette propriété accepte les valeurs de mot clé left, right, start, end, center, justify et match-parent.

Les valeurs left et right alignent le texte respectivement à gauche et à droite du bloc.

Utilisez start et end pour représenter l'emplacement du début et de la fin d'une ligne de texte dans le mode d'écriture actuel. Par conséquent, start est mappé sur left en anglais et sur right en arabe, qui se lit de droite à gauche (RTL). Il s'agit d'alignements logiques. Pour en savoir plus, consultez notre module sur les propriétés logiques.

Utilisez center pour aligner le texte au centre du bloc.

La valeur justify organise le texte et modifie automatiquement l'espacement entre les mots afin que le texte s'aligne sur les bords gauche et droit du bloc.

Changer le sens du texte

Navigateurs pris en charge

  • Chrome: 2.
  • Edge : 12.
  • Firefox : 1.
  • Safari : 1.

Source

Utilisez direction pour définir l'orientation du texte, soit ltr (de gauche à droite, par défaut) ou rtl (de droite à gauche). Certaines langues, comme l'arabe, l'hébreu ou le persan, s'écrivent de droite à gauche. Vous devez donc utiliser direction: rtl. Pour l'anglais et toutes les autres langues de lecture de gauche à droite, utilisez direction: ltr.

Modifier le flux du texte

Navigateurs pris en charge

  • Chrome : 48.
  • Edge : 12.
  • Firefox : 41.
  • Safari: 10.1.

Source

Utilisez writing-mode pour modifier la disposition et le flux du texte. La valeur par défaut est horizontal-tb, mais vous pouvez également définir writing-mode sur vertical-lr ou vertical-rl pour le texte que vous souhaitez afficher horizontalement.

Modifier l'orientation du texte

Navigateurs pris en charge

  • Chrome : 48.
  • Edge: 79
  • Firefox : 41.
  • Safari: 14.

Source

Utilisez text-orientation pour spécifier l'orientation des caractères dans votre texte. Les valeurs valides pour cette propriété sont mixed et upright. Cette propriété n'est pertinente que si writing-mode est défini sur une valeur autre que horizontal-tb.

Ajouter une ombre au texte

Navigateurs pris en charge

  • Chrome : 2.
  • Edge: 12
  • Firefox: 3.5.
  • Safari : 1.1.

Source

Utilisez text-shadow pour ajouter une ombre à votre texte. Cette propriété nécessite trois longueurs (x-offset, y-offset et blur-radius) et une couleur.

Pour en savoir plus, consultez la section text-shadow de notre module sur les ombres.

Polices variables

En règle générale, les polices "normales" nécessitent l'importation de différents fichiers pour différentes versions de la typographie, comme le gras, l'italique ou le condensé. Les polices variables peuvent contenir de nombreuses variantes d'une typographie dans un seul fichier.

Combinaisons aléatoires de largeur et de poids pour Roboto Flex

Pour en savoir plus, consultez cet article sur les polices variables.

Pseudo-éléments

Pseudo-éléments ::first-letter et ::first-line

Navigateurs pris en charge

  • Chrome : 1.
  • Edge : 12.
  • Firefox : 1.
  • Safari : 1.

Source

Les pseudo-éléments ::first-letter et ::first-line ciblent respectivement la première lettre et la première ligne d'un élément textuel.

Pseudo-élément ::selection

Navigateurs pris en charge

  • Chrome : 1.
  • Edge: 12
  • Firefox : 62.
  • Safari : 1.1.

Source

Utilisez le pseudo-élément ::selection pour modifier l'apparence du texte sélectionné par l'utilisateur.

Lorsque vous utilisez ce pseudo-élément, seules certaines propriétés CSS peuvent être utilisées: color, background-color, text-decoration, text-shadow, stroke-color, fill-color, stroke-width.

font-variant

Navigateurs pris en charge

  • Chrome : 1.
  • Edge: 12
  • Firefox : 1.
  • Safari : 1.

Source

La propriété font-variant est un raccourci pour un certain nombre de propriétés CSS qui vous permettent de choisir des variantes de polices telles que small-caps et slashed-zero. Les propriétés CSS incluses dans cet abbréviateur sont font-variant-alternates, font-variant-caps, font-variant-east-asian, font-variant-ligatures et font-variant-numeric. Pour en savoir plus sur l'utilisation de chaque propriété, consultez les liens correspondants.

Vérifier vos connaissances

Tester vos connaissances en typographie sur le Web

Lequel des mots clés suivants peut être utilisé en tant que création de remplacement générique pour font-family ?

serif
Bonne réponse !
monospace
Bonne réponse !
italic
Réessayez. italic est un mot clé valide pour font-style, et non pour font-family.
sci-fi
Réessayez. fantasy est toutefois un remplacement générique valide pour font-family.
sans-serif
Bonne réponse !
helvetica
Réessayez. "Helvetica" n'est pas un mot clé générique, mais fait référence à une famille de polices spécifique.

Quelle instruction permet de convertir la première lettre de chaque mot en majuscule ? (par exemple, This is a sentence. ➡ This Is A Sentence.)

text-capitalize: true;
Réessayez.
text-case: capitalize;
Réessayez.
text-transform: capitalize;
Bonne réponse !
font-style: capitals;
Réessayez.
font-variant: capitalize;
Réessayez.

Vrai ou faux : Utilisez text-orientation pour aligner le texte à gauche, à droite ou au centre.

Vrai
Réessayez. text-orientation modifie la rotation des lettres d'une ligne.
Faux
Bonne réponse ! text-orientation modifie la rotation des lettres d'une ligne. Utilisez text-align pour aligner le texte à gauche, à droite ou au centre (et plus encore).

Quelle propriété CSS permet de modifier l'espacement entre les lignes de texte ?

line-spacing
Réessayez.
leading
Réessayez. Leading est le terme approprié pour désigner l'espace entre les lignes en typographie, mais il ne s'agit pas d'une propriété CSS valide.
baseline-distance
Réessayez.
line-height
Bonne réponse !

Ressources