
Я пытаюсь добавить некоторый пользовательский кернинг к шрифту OpenType, используемому с помощью fontspec
. lualatex
Реальный пример использует Brill
шрифты, но поскольку они не являются частью TeX Live, я использую их Libertinus
в примере ниже.
Я хочу добавить кернинг между определенными символами с диакритическими знаками и надстрочными числами. Единственная комбинация, которая работает, — это прямое использование надстрочных чисел Unicode. Как только я использую \textsuperscript
, который переопределяется с помощью realscripts
для использования правильных цифр, дополнительный кернинг не применяется.
Есть ли способ добиться желаемого при использовании \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}
решение1
Код realscripts добавляет команду \addfontfeature. И это в основном означает, что у вас есть два разных шрифта. Что-то вроде этого должно работать, но нужно добавить несколько тестов, чтобы это не давало сбой, если шрифт не имеет верхних индексов. Посмотрите в код 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}