Comment empêcher une ligature ?#

C’est un point fort de  : certains couples de lettres sont automatiquement remplacés par un glyphe unique, pour des raisons esthétiques, comme on le fait en imprimerie au plomb. Par exemple quand un f et un i se suivent, le haut du f aurait normalement tendance à mordre sur le point du i : <latex>large fnull i</latex>, ce qui ne serait pas très beau. les remplace donc par un nouveau glyphe plus joli : <latex>large fi</latex>. Cette fusion de glyphes est une ligature.

Le même mécanisme est mis en jeu pour obtenir les caractères espagnols <latex>!`</latex> et <latex>?`</latex>, que l’on saisit !\` et ?\`.

Dans les polices cyrilliques utilisées avec l’encodage OT2, le couple de lettres sh produira le glyphe ш.

Empêcher ponctuellement une ligature#

Pour empêcher une ligature, il suffit de séparer les lettres dans le code avec quelque chose qui ne produira rien dans le fichier de sortie. Par exemple : \/, {}, \mbox{}, \null. Les codages de fontes T1 et OT1 fournissent aussi la commande \textcompwordmark, qui a le même but.

L’exemple ci-dessous montre la différence de résultat.

\documentclass{article}
  \usepackage{fontspec}
  \usepackage[french]{babel}
  \pagestyle{empty}

\defaultfontfeatures{
  Ligatures={
    NoCommon,
    NoRequired,
    NoContextual,
    NoHistoric,
    NoDiscretionary
  }
}
\setmainfont[
   BoldFont=lmroman10-bold.otf,
   ItalicFont=lmroman10-italic.otf,
   BoldItalicFont=lmroman10-bolditalic.otf,
   SlantedFont=lmromanslant10-regular.otf,
   BoldSlantedFont=lmromanslant10-bold.otf,
   SmallCapsFont=lmromancaps10-regular.otf
]{lmroman10-regular.otf}

\begin{document}
\Large Comment effacer efficacement les fleurs ?
\end{document}

À comparer à la version qui ne désactive pas les ligatures :
\documentclass{article}
  \usepackage{fontspec}
  \usepackage[french]{babel}
  \pagestyle{empty}

\setmainfont[
   BoldFont=lmroman10-bold.otf,
   ItalicFont=lmroman10-italic.otf,
   BoldItalicFont=lmroman10-bolditalic.otf,
   SlantedFont=lmromanslant10-regular.otf,
   BoldSlantedFont=lmromanslant10-bold.otf,
   SmallCapsFont=lmromancaps10-regular.otf
]{lmroman10-regular.otf}

\begin{document}
\Large Comment effacer efficacement les fleurs ?
\end{document}

et la version qui n’utilise pas \setmainfont pour charger la police :
\documentclass{article}
  \usepackage{lmodern}
  \usepackage[french]{babel}
  \pagestyle{empty}

\begin{document}
\Large Comment effacer efficacement les fleurs ?
\end{document}

Sources :