
Intento agregar un kerning personalizado a una fuente OpenType utilizada con fontspec
under lualatex
. El ejemplo del mundo real usa las Brill
fuentes, pero como no son parte de TeX Live, las uso Libertinus
en el siguiente ejemplo.
Quiero agregar algo de interletraje entre caracteres específicos con signos diacríticos y números en superíndice. La única combinación que funciona es el uso directo de números en superíndice Unicode. Tan pronto como uso \textsuperscript
, que se redefine para realscripts
usar las cifras correctas, no se aplica el interletraje adicional.
¿Hay alguna manera de lograr lo que quiero mientras lo uso \textsuperscript
?
% !TeX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
% Values below are for demonstration purposes only
\directlua {
fonts.handlers.otf.addfeature {
name = "supkern",
type = "kern",
data = {
["ī"] = {
["¹"] = 500,%
["two.sups"] = 500,%
},
["š"] = {%
["one.sups"] = 500,%
["two.sups"] = 500,%
},
},
}
}
\usepackage[defaultfeatures={RawFeature={+supkern}}]{libertinus} %Brill in real life
\usepackage{realscripts}
\begin{document}
ī\textsuperscript{12}
ī¹
ī{\addfontfeatures{VerticalPosition=Superior}2}
{\addfontfeatures{RawFeature={+supkern}}ī\addfontfeatures{VerticalPosition=Superior}12}
š\textsuperscript{2}
\end{document}
Respuesta1
El código realscripts agrega un comando \addfontfeature. Y esto básicamente significa que tienes dos fuentes diferentes. Algo como esto debería funcionar, pero se deberían agregar algunas pruebas, para que no falle si una fuente no tiene los superíndices. Mire el código realscript.
\documentclass{article}
\usepackage{fontspec}
% Values below are for demonstration purposes only
\directlua {
fonts.handlers.otf.addfeature {
name = "supkern",
type = "kern",
data = {
["ī"] = {
["¹"] = 500,%
["two.sups"] = 500,%
},
["š"] = {%
["one.sups"] = 500,%
["two.sups"] = 500,%
},
},
}
}
\usepackage[defaultfeatures={RawFeature={+sups,+supkern}}]{libertinus} %Brill in real life
\RenewDocumentCommand\textsuperscript{m}{#1}
\begin{document}
ī\textsuperscript{12}
ī¹
\end{document}