Microtypographie (microtype)

microtype est le paquet qui rend les paragraphes justifiés visiblement plus beaux. Il a été écrit par R. Schlicht. Son action est discrète : pousser la ponctuation d’un rien hors de la marge, étirer ou comprimer les glyphes d’une fraction de pourcent. Ces ajustements sont presque invisibles isolément, mais sur une page ils alignent le bord droit, régularisent les espaces entre mots et réduisent les rivières blanches comme les lignes qui débordent. En général, une seule ligne suffit : \usepackage{microtype}. Cette page présente la protrusion, l’expansion, le tracking et les autres fonctions, avec le point essentiel : les fonctions disponibles dépendent du moteur.

Ce qu’est microtype

TeX compose déjà bien, mais microtype ajoute une couche de microtypographie : des finitions qui agissent au niveau des caractères individuels et des intervalles entre eux. Ces fonctions ont d’abord été introduites par pdfTeX, puis en partie propagées à LuaTeX et XeTeX. microtype est l’interface LaTeX unifiée vers ces possibilités, et améliore l’aspect des textes occidentaux en alphabet latin.

Ses principales fonctions sont les suivantes. Les deux premières — protrusion et font expansion — sont le cœur du paquet et sont activées par défaut lorsqu’elles peuvent fonctionner sans risque. Les autres s’activent par options selon les besoins.

  • Protrusion des caractères (margin kerning) : faire dépasser légèrement la ponctuation et certaines lettres de la marge pour que le bord du texte paraisse optiquement droit.
  • Expansion de fonte : étirer ou comprimer très légèrement les glyphes de chaque ligne, afin de réduire la variation des espaces entre mots et d’uniformiser la « couleur » du paragraphe.
  • Tracking / letterspacing (\textls) : espacer régulièrement les lettres d’un mot ou d’un passage, surtout pour les capitales et petites capitales.
  • Désactivation des ligatures (\DisableLigatures) : couper les ligatures par police ; utile notamment pour les familles machine à écrire.
  • Ajustement des espaces entre mots et du crénage supplémentaire : options spacing / kerning (pdfTeX seulement).

Notez que ces raffinements concernent le texte occidental (latin). Le japonais possède son propre modèle de composition — interdictions de début/fin de ligne, espacement entre caractères japonais et occidentaux, etc. — distinct de la protrusion et de l’expansion, et pris en charge par des outils comme luatexja. Les traitements occidentaux automatiques plus fondamentaux, comme les ligatures et le crénage, sont présentés dans la page sœur « Writing Western text ».

Protrusion des caractères

La protrusion (ou margin kerning) laisse les caractères au début ou à la fin d’une ligne dépasser très légèrement de la marge. La raison est optique. Si un point, une virgule, un trait d’union, ou une lettre au contour rond ou oblique comme o, A ou v, est aligné exactement sur le bord du texte, les approches de ce glyphe font paraître le bord rentré vers l’intérieur. En laissant ces caractères dépasser un peu, le bord du bloc paraît optiquement droit.

Pousser entièrement la ponctuation de fin de ligne dans la marge est l’idée connue de hanging punctuation. Il est utile de voir la protrusion de microtype comme la même opération, mais par caractère, à la bonne dose et de façon plus subtile. L’effet se voit surtout sur la ponctuation et sur les lettres de petite surface ou au contour non plat. La protrusion fonctionne avec les trois grands moteurs : pdfTeX, LuaTeX et XeTeX.

La protrusion agit naturellement dans les paragraphes courants, mais pas là où TeX ne voit pas de marge — par exemple dans itemize ou tabular. Pour faire dépasser le premier ou le dernier glyphe dans ces endroits, microtype fournit \leftprotrusion et \rightprotrusion (ce contrôle plus fin exige les extensions e-TeX).

Expansion de fonte

L’expansion de fonte étire ou comprime les glyphes de chaque ligne horizontalement, d’une quantité minime (souvent une fraction de pourcent jusqu’à quelques pourcents) pour ajuster les lignes à la justification. En justification, la largeur de ligne s’obtient normalement en étirant ou comprimant la colle entre mots ; si une légère variation des largeurs de glyphes prend une partie du travail, les espaces entre mots varient moins. Le résultat est une variation plus faible d’une ligne à l’autre et une « couleur » de paragraphe plus uniforme.

Un avantage pratique est la réduction des overfull et underfull boxes (avertissements de lignes qui débordent ou trop lâches) : la composition gagne en souplesse. Les limites se règlent avec les options stretch et shrink, et le pas avec step, mais les valeurs par défaut conviennent pour commencer.

Point crucial : l’expansion n’est disponible qu’avec pdfTeX et LuaTeX, pas avec XeTeX. Si vous chargez microtype sous XeTeX, la protrusion et le tracking fonctionnent encore, mais l’expansion est désactivée automatiquement (sans erreur, car le paquet n’active que ce qui peut fonctionner sans risque). Si vous voulez le traitement complet avec expansion, il faut passer à LuaTeX.

Tracking et letterspacing

Le tracking (letterspacing) ouvre régulièrement l’espace entre les lettres. Celui de microtype est réalisé en élargissant l’espacement propre de la fonte plutôt qu’en insérant des blancs entre caractères ; il ne casse donc pas la césure. On évite ainsi la faiblesse de la méthode classique qui consiste à parsemer le mot de \kern manuels, ce qui empêche le mot de se couper.

Pour un espacement ponctuel des lettres, utilisez \textls{...}. Cela fonctionne que l’option tracking soit active ou non, et même en mode mathématique. La valeur est en millièmes (par défaut environ 100/1000) et peut être donnée en argument optionnel, comme \textls[200]{...}. Pour l’appliquer à une suite de caractères, \lsstyle active le letterspacing jusqu’à la fin du groupe. Pour les titres, où l’on ne veut pas de crénage supplémentaire avant et après, la forme étoilée \textls*{...} est pratique.

Pour le régler sur tout un ensemble de fontes, écrivez par exemple \SetTracking{encoding=*, shape=sc}{40} dans le préambule (ici, les petites capitales sont espacées de 40/1000). Attention : espacer les minuscules est traditionnellement jugé laid. Le manuel de microtype lui-même recommande, en règle générale, de n’espacer que les capitales ou petites capitales. Le tracking fonctionne avec pdfTeX, LuaTeX et XeTeX.

document.tex
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{microtype}
% space out small caps by 40/1000 wherever they appear
\SetTracking{encoding = *, shape = sc}{40}
\begin{document}
\textsc{Small Caps}, and ad-hoc \textls[200]{LETTERSPACED} capitals.
\end{document}

Autres fonctions et configuration

microtype peut aussi contrôler les ligatures, le crénage supplémentaire et les espaces entre mots. Pour désactiver les ligatures, utilisez \DisableLigatures. Par exemple, \DisableLigatures{encoding = T1, family = tt*} coupe les ligatures de la famille machine à écrire en codage T1 — utile, par exemple, pour afficher du code sans que -- soit fondu en tiret demi-cadratin. Attention toutefois : désactiver toutes les ligatures d’une police désactive aussi son crénage. En listant les caractères initiaux de ligatures dans l’argument optionnel, comme [?,!], on ne désactive que les ligatures choisies. La commande ne peut être utilisée que dans le préambule, et une seule fois.

Les options kerning et spacing activent respectivement le crénage supplémentaire et l’ajustement de l’espace entre mots, mais elles sont réservées à pdfTeX (elles ne font rien sous LuaTeX ou XeTeX). Toutes deux sont désactivées par défaut ; activez-les explicitement seulement si nécessaire, par exemple avec \usepackage[kerning=true,spacing=true]{microtype}.

Pour changer les réglages après le chargement, utilisez \microtypesetup{...}. Par exemple, pour désactiver la protrusion seulement pendant la construction de la table des matières, encadrez-la par \microtypesetup{protrusion=false} et \microtypesetup{protrusion=true}. Pour donner une configuration différente à une partie du document, changez de contexte avec \microtypecontext{...} (ou l’environnement microtypecontext). L’option draft désactive toute la microtypographie, pratique pour comparer avant/après.

Prise en charge selon le moteur

Les fonctions disponibles dépendent du moteur TeX. microtype n’active automatiquement que ce qui fonctionne sans risque avec votre moteur ; le charger sans option ne provoque donc pas d’erreur. Mais il est utile de savoir ce qui a un effet ou non. Deux points à retenir : l’expansion n’est pas disponible sous XeTeX, et l’espacement entre mots comme le crénage supplémentaire sont propres à pdfTeX.

FonctionpdfTeXLuaTeXXeTeX
protrusionProtrusionOuiOuiOui
expansionExpansion de fonteOuiOuiNon
trackingTracking (letterspacing)OuiOuiOui
ligaturesDésactivation des ligaturesOuiOuiNon
kerningCrénage supplémentaireOuiNonNon
spacingEspacement entre motsOuiNonNon

En résumé, pdfTeX est le plus complet (protrusion + expansion + tracking + kerning + spacing), puis vient LuaTeX (protrusion + expansion + tracking, mais pas de kerning ni de spacing), tandis que XeTeX n’offre que protrusion et tracking (pas d’expansion).

Utilisation

Le cas de base est une seule ligne, \usepackage{microtype}. Elle active par défaut la protrusion et l’expansion (là où le moteur les prend en charge), et la plupart des documents y gagnent nettement. microtype est stable et presque sans effets secondaires : l’ajouter pose rarement problème. Pour une composition occidentale sérieuse, c’est pratiquement un geste standard, presque une amélioration de qualité obligatoire. On l’associe souvent à fontenc ([T1] avec les moteurs pdfTeX).

Voici un préambule un peu plus poussé. Il active explicitement la protrusion et l’expansion (activate), espace légèrement les petites capitales avec \SetTracking, et désactive les ligatures seulement pour la famille machine à écrire utilisée pour le code. Les commentaires indiquent le rôle de chaque option.

document.tex
\documentclass{article}
\usepackage[T1]{fontenc}
% protrusion + expansion explicitly on; "final" forces them in draft mode too
\usepackage[activate={true,nocompatibility},final]{microtype}
% letterspace small caps a little (40/1000)
\SetTracking{encoding = *, shape = sc}{40}
% in code, keep "--" as two hyphens (also turns off kerning for this font)
\DisableLigatures{encoding = T1, family = tt*}
\begin{document}
Justified paragraphs look more even, \textsc{small caps} are gently
letterspaced, and \texttt{a--b} stays as two hyphens in code.
\end{document}

Les ajustements sont subtils et peuvent ne pas sauter aux yeux. Mais au fil des pages, on voit le bord droit se stabiliser, les espaces entre mots s’apaiser, et moins de césures ou de débordements. Comme touche finale, microtype mérite vraiment une place dans votre boîte à outils.