
Tento adicionar algum kerning personalizado a uma fonte OpenType usada com fontspec
under lualatex
. O exemplo do mundo real usa as Brill
fontes, mas como elas não fazem parte do TeX Live eu uso Libertinus
no exemplo abaixo.
Quero adicionar algum kerning entre caracteres específicos com diacríticos e números sobrescritos. A única combinação que funciona é o uso direto dos números sobrescritos Unicode. Assim que eu uso \textsuperscript
, que é redefinido por realscripts
para usar os números corretos, o kerning extra não é aplicado.
Existe alguma maneira de conseguir o que desejo enquanto 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}
Responder1
O código realscripts adiciona um comando \addfontfeature. E isso basicamente significa que você tem duas fontes diferentes. Algo assim deve funcionar, mas deve-se adicionar alguns testes, para que não falhe se uma fonte não tiver sobrescritos. Veja o 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}