Esperluette automatique

Pour de jolies ligatures

Il est dit par le Lexique des règles typographiques en usage à l’imprimerie nationale que l’esperluette — aussi appelé « et commercial » —, à savoir donc le symbole &, est utilisable comme ligature en lieu et place de la conjonction « et » dans les passages en italiques.

Je propose ici un petit code pour permettre à LuaLaTeX de le faire automatiquement.

Exemple

Court exemple :

\emph{Un zeste de citron c'est bon et c'est frais.}

Sans la fonction proposée aujourd’hui cela donnerait :

Sans fonction
Sans fonction

Avec :

Avec fonction
Avec fonction

How to

On essaye donc d’avoir le résultat suivant : changer le « et » en « & » lorsque le texte est en italique et seulement dans ce cas-ci.

La solution que je propose consiste à utiliser les possibilités de fontspec avec LuaLaTeX.

\documentclass{article}

\usepackage{fontspec}

\directlua{
 fonts.handlers.otf.addfeature
 {
   name = "itet",
   type = "chainsubstitution",
   lookups = {
            {
                type = "ligature",
                data = {
                    ["&"] = { "e","t" },
                },
            },
     },
    data = {
      rules = {
        {
          before  = { { 0xFFFC } },
          after   = { { 0xFFFC,  "," } },
          current = {{"e"},{"t"}},
          lookups = { 1 },
        },
      },
    },
}
}

\setmainfont{TeXGyrePagella}[ItalicFeatures = {RawFeature = {+itet}}]

\begin{document}
Un zeste de citron c'est bon et c'est frais.

\emph{Un zeste de citron c'est bon et c'est frais.}

\end{document}

Explications

Le code se divise en plusieurs partie. La plus importante et corsée étant :

\directlua{
 fonts.handlers.otf.addfeature
 {
   name = "itet",
   type = "chainsubstitution",
   lookups = {
            {
                type = "ligature",
                data = {
                    ["&"] = { "e","t" },
                },
            },
     },
    data = {
      rules = {
        {
          before  = { { 0xFFFC } },
          after   = { { 0xFFFC,  "," } },
          current = {{"e"},{"t"}},
          lookups = { 1 },
        },
      },
    },
}
}
0x

Comme vous le savez peut-être \directlua permet de passer à Lua du code.

Le code en question, dont la documentation est malheureusement inexistante, la principale source pour l’étudier et en faire de nouveaux se trouve ici.

De ce que j’en comprends, voici ce qu’il se passe :

  • 'name' permet de donner un nom à la feature afin de l’activer plus tard ;
  • 'type' indique le genre de fonction que l’on fait ; ça aurait pu être aussi par exemple "kern" qui permet d’ajuster des espacements entre caractères, "ligature" pour faire une ligature (mais pas de notre genre à nous), etc.
  • 'lookups’ et 'data' fonctionnent de paire : 'lookups’ donne les règles de substitutions, dans notre cas il n’y en a qu’une (d’où plus tard un 'lookups = {1}' qui indique un renvoi vers cette règle) ;
  • 'data' explique à travers 'rules’ dans quelles conditions s’applique le code ;
  • 'before’, 'after' et 'current' sont les conditions : '0xFFFC' est l’espace, et ici on fait en sorte que les caractères en cours soient 'e' et 't’, qu’avant il y ait une espace et qu’après il y ait une espace ou une virgule ;
  • 'lookups={1}' indique que si la condition est vérifiée alors c’est le premier élément de lookups qui agit.

Ensuite vient l’appel à fontspec, en décrivant la fonte principale.

\setmainfont{TeXGyrePagella}[ItalicFeatures = {RawFeature = {+itet}}]

Ici j’ai choisi TeXGyreHeros parce qu’elle est libre. Mais vous pouvez utiliser n’importe quelle fonte. (Personnellement j’utilise Kepler d’Adobe.) L’option donnée entre crochet explique à fontspec qu’il faut utiliser notre fonction en mode italique (ItalicFeatures).


Cela conclut ce micro-billet. Bonne tape !

6 commentaires

Comme souvent sur les règles fines de la typographie, ça reste à la discretion de l’auteur. Moi j’aimais bien, et l’imprimerie nationale aussi, alors ça m’a donné confiance :)

Et je pense aussi que le fait que l’esperluette en italique ressemble beaucoup plus à « et » qu’en fonte romane, ça aide. On le voit mieux comme une ligature, et moins comme une lettre différente

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte