Utiliser les variantes stylistiques d’une police

Dans le billet précédent, nous avons passé en revue différentes polices pour la linguistique. Nous avons vu que certaines proposaient des variantes de caractères pour les lettres grecques et pour la version italique de certaines lettres latines dans le cas de notations phonétiques. Ce billet explique comment utiliser ces variantes.

Je n’ai pas la moindre idée de comment activer cette fonction dans un traitement de texte. En revanche, dans LaTeX, et plus précisément XeLaTeX, c’est simplissime. Si vous faites partie du monde de la recherche (ou pas d’ailleurs), je vous conseille plus que vivement d’abandonner votre traitement de texte et d’apprendre LaTeX. Cela a révolutionné ma manière de travailler et de rédiger, ainsi que celle de tous les collègues et étudiants qui l’ont adopté (plus d’informations dans un prochain billet peut-être).

Pour commencer

Dans XeLaTeX, il suffit de charger l’extension fontspec et de déclarer une police de caractères avec la commande \setmainfont. Dans tous les exemples ci-dessous, j’utiliserai la police Brill vue dans le billet précédent. On peut constater qu’effectivement la forme de certains caractères utilisés pour la notation phonétique peut poser problème.

\documentclass[11pt]{article}
\usepackage{fontspec}
\setmainfont{Brill}
\begin{document}
aɑæœfgɡ \textit{aɑæœfgɡ} βθχ \textit{βθχ}
\end{document}

brill

Activer les variantes

Pour activer les variantes de caratères pour la notation phonétique, il suffit d’utiliser l’option StylisticSet lors du chargement de la police, avec comme valeur le numéro du jeu de variantes désiré. Le numéro du jeu de variantes s’obtient en lisant la documentation de la police, ou bien en l’inspectant avec un éditeur de polices comme Fonforge. Dans le cas de Brill, il s’agit du jeu no20, et du no5 dans le cas des polices du SIL (Gentium PlusCharis SIL).

Avec le code suivant (abrégé, je ne donne que la partie différant de l’exemple plus haut), on obtient le résultat ci-dessous:

\setmainfont[StylisticSet=20]{Brill}

brill-ss20

Activer les variantes dans certains cas seulement

Premier problème: que faire si l’on veut dans un même texte faire cohabiter du grec et de la phonétique, et donc avoir tantôt l’une variante, tantôt l’autre? Très simple, il suffit de créer une commande spécifique pour le grec, qui fait appel à la même police, mais sans l’option StylisticSet. L’extension polyglossia simplifie la procédure puisqu’elle crée de manière semi-automatique ce genre de commande. Pour le grec ancien le code (abrégé) devient donc:

\usepackage{polyglossia}
\setmainfont[StylisticSet=20]{Brill}
\setotherlanguage[variant=ancient]{greek}
\newfontfamily\greekfont{Brill}
\begin{document}
aɑæœfgɡ \textit{aɑæœfgɡ}\\
βθχ \textit{βθχ} \textgreek{βθχ \textit{βθχ}}
\end{document}

brill-grec

On peut aller plus loin encore et vouloir que les variantes apparaissent si et seulement si ils sont utilisés comme symboles phonétiques. Il suffit de répéter la manœuvre effectuée pour le grec,  en créant, manuellement cette fois-ci, une commande faisant appel à la police affectée de l’option StylisticSet, et en supprimant l’option de la déclaration de la police de base. Il ne faut pas oublier les accolades supplémentaires autour de \ipafont#1 afin de limiter le champ d’application du changement de police au contenu de l’argument de la commande.

\setmainfont{Brill}\newfontfamily\ipafont[StylisticSet=20]{Brill}
\newcommand{\ipa}[1]{{\ipafont#1}}
\begin{document}
aɑæœfgɡ \textit{aɑæœfgɡ}\\
βθχ \textit{βθχ} \textgreek{βθχ \textit{βθχ}}\\
\ipa{\textit{aɑæœfgɡ} βθχ \textit{βθχ}}
\end{document}

brill-ipa

On peut alors se passer de définir une police pour le grec, puisqu’il s’agit ici de la même police que celle de base (je conseille néanmoins de baliser le grec avec  \textgreek{}, ne serait-ce que pour conserver la césure des mots grecs).

On peut en fait simplifier le code ci-dessus en se passant de déclarer une police spécifique à la phonétique, puisqu’il s’agit de la même police mais avec des options différentes. La commande \addfontfeature{} permet de rester dans la même police tout en rajoutant une option, comme par exemple StylisticSet.

\newcommand{\ipa}[1]{{\addfontfeature{StylisticSet=20}#1}}

Activer uniquement certaines variantes

Dernier cas de figure, beaucoup plus complexe: que faire si l’on veut uniquement utiliser certaines variantes du jeu disponible? Typiquement, on peut vouloir accéder aux variantes des lettres grecques, mais pas à celle des lettres latines, ou pas toutes du moins. Malheureusement, ce n’est pas possible directement, et il faut recourir à du code un peu complexe.

Avis: J’ai depuis proposé une solution supérieure à celle proposée ci-dessous.

La solution consiste à définir notre commande ipa pour la phonétique de telle manière que celle-ci effectue des substitutions avant de retourner son argument. Les substitutions sont possibles avec l’extension xstring. Dans l’exemple ci-dessous, les caractères grecs sont remplacés par eux-mêmes précédés de la commande \addfontfeature{StylisticSet=20}, qui permet d’activer les variantes. La difficulté consiste à établir des substitutions en série, ce qui nécessite de définir puis de redéfinir une commande contenant l’argument à l’intérieur même de la commande. Je passe sur les autres détails techniques.

\def\myipastring{#1}%
\noexpandarg%
\expandafter\StrSubstitute\expandafter{\myipastring}{β}{{\addfontfeature{StylisticSet=20}β}}[\myipastring]%
\expandafter\StrSubstitute\expandafter{\myipastring}{θ}{{\addfontfeature{StylisticSet=20}θ}}[\myipastring]%
\expandafter\StrSubstitute\expandafter{\myipastring}{χ}{{\addfontfeature{StylisticSet=20}χ}}[\myipastring]%
\expandafter\myipastring%
}
\begin{document}
\begin{varwidth}{\linewidth}
aɑæœfgɡ \textit{aɑæœfgɡ}\\
βθχ \textit{βθχ} \textgreek{βθχ \textit{βθχ}}\\
\ipa{\textit{aɑæœfgɡ} βθχ \textit{βθχ}}
\end{varwidth}
\end{document}

brill-varsub

Attention, il y a un piège! Les dernières lettres grecques en italique de l’exemple ci-dessus n’ont pas été changées correctement, et le fait que les lettres latines n’apparaissent pas dans leur forme variante est une illusion. Pour une raison qui dépasse mes compétences, il n’est pas possible d’inclure une commande comme \textit à l’intérieur de la commande \ipa telle que nous l’avons définie. L’imbrication inverse, une commande \ipa à l’intérieur de \textit est en revanche possible.

Il faut donc rédiger le code texte comme sur la dernière ligne de l’exemple suivant, et non l’avant dernière.

aɑæœfgɡ \textit{aɑæœfgɡ}\\
βθχ \textit{βθχ} \textgreek{βθχ \textit{βθχ}}\\
\ipa{\textit{aɑæœfgɡ} βθχ \textit{βθχ}}\\%ne fonctionne pas correctement
\textit{\ipa{aɑæœfgɡ}} \ipa{βθχ} \textit{\ipa{βθχ}}%fonctionne correctement

brill-varsub2

Enfin, il est possible de rendre le code plus simple à gérer en remplaçant tous les appels à la commande \addfontfeature{StylisticSet=20} par une commande personnelle dont la définition sera simplement d’appliquer\addfontfeature{StylisticSet=20}., ce qui permet de rendre le code plus facilement réutilisable avec une autre police. De même, il est souhaitable de simplifier les commandes de substitution.

Le code complet final et fonctionnel est donc:

\documentclass[11pt]{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainfont{Brill}
\setotherlanguage[variant=ancient]{greek}

\usepackage{xstring}
\newcommand{\varphon}{\addfontfeature{StylisticSet=20}}
\newcommand{\mysub}[1]{\expandafter\StrSubstitute\expandafter{\myipastring}{#1}{{\varphon #1}}[\myipastring]}
\newcommand{\ipa}[1]{%
\def\myipastring{#1}%
\noexpandarg%
\mysub{β}%
\mysub{θ}%
\mysub{χ}%
\expandafter\myipastring%
}

\begin{document}
aɑæœfgɡ \textit{aɑæœfgɡ}\\
βθχ \textit{βθχ} \textgreek{βθχ \textit{βθχ}}\\
\textit{\ipa{aɑæœfgɡ}} \ipa{βθχ} \textit{\ipa{βθχ}}
\end{document}
Ce billet peut être cité de la façon suivante: Thomas Pellard, « Utiliser les variantes stylistiques d’une police », Cipanglossia, 10 juin 2016, https://cipanglo.hypotheses.org/174.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *