Comment empêcher une ligature?

C'est un point fort de \TeX : 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: \large f\null i, ce qui ne serait pas très beau. \TeX les remplace donc par un nouveau glyphe plus joli: \large fi. Cette fusion de glyphes est une ligature.

Le même mécanisme est mis en jeu pour obtenir les caractères espagnols !` et ?`, 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 \LaTeX 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.

effacer
 
ef\/facer
 
ef{}facer
 
ef\null facer
 
ef\mbox{}facer
 
ef\textcompwordmark facer
La même solution permet d'empêcher le crénage entre deux caractères (kerning).

Comparer AV (\large AV) et A\/V (\large A\/V).


\LARGE
effacer

ef\/facer

ef{}facer

ef\null facer

ef\mbox{}facer

ef\textcompwordmark facer


Notez que, dans certains cas (comme ici), la ligature est faite malgré {}. Il peut s'agit d'un effet de bord de l'utilisation de l'extension multicol. On peut donc préférer les autres solutions. Dans tous les cas, les césures du mot ne sont plus faites automatiquement par \LaTeX, il faut les définir à la main.

Empêcher les ligatures dans tout le document

Les options de fontspec peuvent désactiver toutes les ligatures esthétiques, ou les désactiver type par type.

\documentclass{article}
  \usepackage{fontspec}
  \usepackage[french]{babel}
 
\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}

\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:

3_composition/texte/mots/desactiver_une_ligature.txt · Dernière modification : 2021/04/18 11:32 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0