Malheureusement, il se peut que certaines fontes ne fournissent pas une version en petites majuscules pour tous les caractères qu'elle supporte en bas de casse et en majuscule. Dans ce cas, la version en bas de casse est utilisée :
\documentclass{article} \usepackage{fontspec} \setmainfont{Libertinus Serif} \begin{document} AḤMAD B. FAŻLĀN B. AL-ʿABBĀS B. RAŠĪD Aḥmad b. Fażlān b. al-ʿAbbās b. Rašīd \textsc{Aḥmad b. Fażlān b. al-ʿAbbās b. Rašīd} \end{document}
ā
en petites majuscules. La version utilisée pour générer ce document est un peu ancienne.
Dans le cas d'une police libre, vous pouvez bien entendu envoyer un rapport de bug. Mais dans l'intervalle, comment obtenir un ḥ
et un ā
en petites majuscules ?
Le code source des polices OpenType comprend une série de fichiers .fea
, qui définissent différentes fonctionnalités (features) de la fonte. La commande \textsc
active la fonctionnalité smcp
(pour small-caps). Pour obtenir un ḥ
et un ā
en petites capitales, nous allons donc intégrer à notre fichier .tex
des instructions pour compléter le fichier .fea correspondant de Libertinus.
Les caractères dotés de diacritiques peuvent être obtenus de deux manières. Si les concepteurs de la fonte ont dessiné un glyphe correspondant au caractère unicode de ḥ
(i.e. U+1E25), on peut l'obtenir en indiquant que, quand on utilise la fonctionnalité smcp
, il faut remplacer le caractère ḥ
par ḥ.sc
(version en petites majuscules de ḥ
). Comme ce n'est pas le cas ici, on indiquera plutôt qu'il faut remplacer le ḥ
par h.sc
suivi d'un point en-dessous en combinaison (caractère U+1E25). Dans ce cas, le rendu final dépendra du moteur utilisé.
Jusqu'en 2016, il était possible de charger un fichier .fea
complémentaire avec l'option FeatureFile
de fontspec
. Depuis 2017, cette option n'est plus supportée, et Lua(La)TeX propose à la place un autre mécanisme reposant sur des scripts Lua. Ce nouveau mécanisme est plus rapide que le précédent et utilise moins de mémoire, mais il est malheureusement très mal documenté (voir les sources en bas de la page).
Pour les petites capitales, on s'inspirera du code suivant :
\documentclass{article} \usepackage{fontspec} \setmainfont{Libertinus Serif} \directlua{ fonts.handlers.otf.addfeature { name = "smcp", type = "multiple", data = { ['ḥ'] = { "h.sc", 0x0323 }, ['ā'] = { "a.sc", 0x0304 }, }, } } \begin{document} \textsc{Aḥmad b. Fażlān b. al-ʿAbbās b. Rašīd} \end{document}
Le script Lua interprétée par Lua(La)TeX est inséré grâce à la commande \directlua
.
La commande fonts.handlers.otf.addfeature
utilisée dans ce script est passée à luaotfload
,
appelé automatiquement par Lua(La)TeX pour gérer l'importation des polices.
À l'intérieur de la commande, on ajoute les propriétés de la fonctionnalité que l'on ajoute :
.fea
de la police (introduit dans ce fichier par le mot-clef feature
, voir ici pour Libertinus) ;type
, la manière dont il faut interpréter les remplacements que nous allons renseigner (ici, “multiple”
signifie que les caractères qui composent les remplacements doivent être additionnés) ;data
, où il faut respecter scrupuleusement l'usage des crochets, des accolades, des guillemets et des virgules. La première ligne peut se lire comme suit : dans le mode smcp
, à chaque fois que l'on rencontre un ḥ
, il faut le remplacer par l'addition de la lettre h
en petites majuscules et de la diacritique U+0323.
Pour éviter de surcharger votre préambule et faciliter la réutilisation du code dans plusieurs fichiers, vous pouvez enregistrer le script Lua dans un fichier appelé, par exemple, libertinus-sc.lua
, que vous appellerez avec la commande :
\directlua{ require("libertinus-sc.lua") }
$HOME/texmf/scripts/lua
ou dans /usr/share/texmf/scripts/lua
, conformément à la TDS.
fontspec
et chargement du script ;polyglossia
;De manière générale, comme le précise le manuel de polyglossia p. 5, « il est conseillé d'activer les langues après avoir chargé toutes les extensions ».
Sources :