Polices et familles de polices dans ConTeXt
Polices et familles de polices dans ConTeXt
[modifier | modifier le wikicode]ConTeXt possède un système très puissant de gestion des polices, beaucoup plus souple que celui de LATEX. Les commandes modernes permettent d’utiliser n’importe quelle police Unicode installée sur le système, de définir des familles complètes (serif, sans, mono, math), d’ajouter des polices de secours (« fallback »), et de mélanger plusieurs langues dans un même document.
Cette page présente les concepts essentiels et fournit des scripts ConTeXt prêts à l’emploi.
1. Où ConTeXt cherche-t-il les polices ?
[modifier | modifier le wikicode]ConTeXt utilise la base de données de polices du système (Windows, macOS, Linux). Lorsqu’on installe de nouvelles polices, il faut parfois recharger la base :
sous Windows, on commence par ouvrir un console avec la commande : CMD, puis on cherche le répertoire où ConTeXt est installé, afin d'activer la commande mtxrun comme ceci :
cd context
cd tex
cd texmf-win64
ensuite, on recharge les polices installées dans C:/windows/fonts et celles que vous avez installées dans context/texmf-fonts/otf et /ttf :
mtxrun --script fonts --reload
sous Linux :
export OSFONTDIR="$HOME/.fonts:/usr/local/share/fonts"
mtxrun --script fonts --reload
On peut lister toutes les polices détectées :
mtxrun --script fonts --list --all
Pour filtrer une police donnée (exemple : « DejaVu ») :
mtxrun --script fonts --list --pattern=dejavu* --all
2. Définir une famille de polices
[modifier | modifier le wikicode]La commande moderne est :
\definefontfamily [nom] [type] [NomDePolice]
où type ∈ {serif, sans, mono, math}.
Exemple : utiliser *TeX Gyre Pagella* comme police principale :
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface]
\starttext
Texte en Pagella.
\stoptext
Définir plusieurs familles
[modifier | modifier le wikicode]Il est possible de définir plusieurs familles et de basculer de l’une à l’autre :
\definefontfamily [pagella] [serif] [TeX Gyre Pagella]
\definefontfamily [dejavu] [serif] [DejaVu Serif]
\setupbodyfont[pagella]
\starttext
Texte en Pagella.
\switchtobodyfont[dejavu]
Texte en DejaVu.
\stoptext
3. Polices mono et mathématiques
[modifier | modifier le wikicode]Certaines polices nécessitent la désactivation de ligatures pour être utilisées en monospace :
\definefontfamily [myface] [mono] [TeX Gyre Cursor] [features=none]
Pour les mathématiques (Unicode Math), ConTeXt gère sans effort les familles modernes :
\definefontfamily [pagella] [math] [TeX Gyre Pagella Math]
4. Les polices de secours (fallback)
[modifier | modifier le wikicode]Lorsque la police principale n’inclut pas certains alphabets (grec, arabe, hébreu, cyrillique), on ajoute des « fallback » :
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\definefallbackfamily [mainface] [serif] [DejaVu Serif]
[range=cyrillic]
\definefallbackfamily [mainface] [serif] [DejaVu Serif]
[range={greekandcoptic, greekextended}, force=yes]
\setupbodyfont[mainface]
\starttext
Русский текст.
Ἑλληνικὰ γράμματα.
Texte latin.
\stoptext
ConTeXt sélectionne automatiquement la bonne police selon le caractère à afficher.
5. Mélanger polices et langues
[modifier | modifier le wikicode]Pour un document contenant plusieurs langues :
\setuplanguage[fr][patterns={fr,de,ru,gr}]
\mainlanguage[fr]
\starttext
Français — Deutsch — Русский — Ἑλληνικά.
\stoptext
Les fallback permettent l’affichage correct des alphabets non latins.
6. Exemples de familles courantes
[modifier | modifier le wikicode]Famille DejaVu
[modifier | modifier le wikicode]\definefontfamily [dejavu] [serif] [DejaVu Serif]
\definefontfamily [dejavu] [sans] [DejaVu Sans]
\definefontfamily [dejavu] [mono] [DejaVu Sans Mono]
\definefontfamily [dejavu] [math] [TeX Gyre Pagella Math]
\setupbodyfont[dejavu]
Famille Linux Libertine / Biolinum
[modifier | modifier le wikicode]\definefontfamily [linux] [serif] [Linux Libertine O]
\definefontfamily [linux] [sans] [Linux Biolinum O]
\definefontfamily [linux] [mono] [Latin Modern Mono]
\definefontfamily [linux] [math] [TeX Gyre Pagella Math]
\setupbodyfont[linux]
7. Changer de police à l’intérieur d’un document
[modifier | modifier le wikicode]On peut basculer une section ou un paragraphe dans une autre famille :
\setupbodyfont[pagella]
\starttext
Texte principal en Pagella.
\switchtobodyfont[linux]
Texte en Linux Libertine.
\switchtobodyfont[dejavu]
Texte en DejaVu Serif.
\stoptext
8. Tester une police précise
[modifier | modifier le wikicode]On peut définir une police brute (sans famille) :
\definefont [delicious] [name:deliciousroman]
\starttext
\delicious Ceci est un test.
\stoptext
9. Ressources utiles
[modifier | modifier le wikicode]- Documentation : https://wiki.contextgarden.net/Fonts_in_LuaTeX
- Liste de polices Unicode modernes : Noto, DejaVu, FreeSerif, TeX Gyre, Linux Libertine.