Comment spécifier une fonte de substitution pour les caractères qui manquent à ma fonte principale ?#

Parfois, il manque quelques caractères à une fonte, qu’il est possible de composer dans une autre fonte sans que cela ne dépare le texte : par exemple, si les deux fontes se ressemblent beaucoup ou s’il s’agit d’émoticones ou de symboles. Cette page traite des moyens de spécifier cette fonte de remplacement une fois pour toute dans le préambule.

Attention

Cette page ne traite pas de l’utilisation d’une fonte secondaire pour une langue autre que la langue principale (par exemple pour du texte en caractères cyrilliques). Si tel est votre besoin, utilisez \babelfont avec babel ou voyez la section Font setup dans le manuel de polyglossia.

À faire

Créer une page sur la configuration des fontes en fonction des langues.

Astuce

Si le caractère manquant est un caractère avec diacritique, vous pouvez tenter de le configurer sans changer de fonte en suivant les instructions ici.

1.  Avec newunicodechar#

newunicodechar permet de déclarer n’importe quel remplacement pour un caractère Unicode donné. Un de ses usages possibles est de spécifier dans le remplacement le caractère précédé de la commande de fonte qui doit être utilisée pour l’afficher. Dans l’exemple suivant, on utilise FreeSerif et Garamond Libre pour compléter la fonte par défaut de Voici un exemple d’utilisation :

% !TEX engine=lualatex
\documentclass[french,a6paper]{article}
\usepackage{geometry}
\usepackage{fontspec}
\usepackage{newunicodechar}
\usepackage{babel}
\usepackage{hyperref}

\newfontface\chiffresdansronds{FreeSerif}
\newunicodechar{}{{\chiffresdansronds}}
\newunicodechar{}{{\chiffresdansronds}}

\newfontface\chiffresgrecs{Garamond Libre}
\newunicodechar{ϡ}{{\chiffresgrecs ϡ}}

\begin{document}

Il peut être nécessaire d'utiliser une fonte de substitution pour quelques
caractères, notamment : ❶~si vous utilisez des symboles ou des émojis ;
❷~si votre fonte ne supporte pas certains caractères (par exemple si vous
voulez écrire 900 en
\href{https://fr.wikipedia.org/wiki/Numération_grecque}{numération grecque} :
ϡ).

\end{document}

Si vous avez toute une série de caractères à configurer de la sorte, vous pouvez ajouter à votre préambule la macro suivante :

\makeatletter
\newcommand*{\substituerFonte}[2]{%
  \expandafter\newfontface
    \csname fonte@substitution@#1\endcsname
    {#1}%
  \substituer@fonte@char[#1]#2,\relax,
}
\def\substituer@fonte@char[#1]#2,{%
  \ifx #2\relax
    \let\todo\relax
  \else
    \newunicodechar{#2}{{%
        \csname fonte@substitution@#1\endcsname
        #2%
      }}%
    \def\todo{\substituer@fonte@char[#1]}%
  \fi
  \todo
}
\makeatother

à utiliser ainsi :

\substituerFonte{Garamond Libre}{α,β,γ,φ,δ,ε,ζ,γ,θ,η}
\substituerFonte{FreeSerif}{❶,❷,❸,❹}