%3F.png)
Я создаю документ, используя шрифт Minion Pro, в котором отсутствует лигатура 'oo' (т. е. U+A74F: ꝏ). Поэтому я хотел бы искусственно создать эту лигатуру, автоматически уменьшив интервал между любыми вхождениями пары букв 'oo'. Я могу сделать это вручную и создать команду (например, \oo
), но это было бы довольно раздражающе по сравнению с простотой других лигатур.
Ниже представлен эффект, который мне бы хотелось получить, хотя он и будет громоздким:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Minion Pro}
\begin{document}
\Huge
Bo\hspace{-.15em}ok\par Book
\end{document}
решение1
Здесь я делаю o
активным то, что вам в общем-то не нужно, поэтому я предоставляю \myligON
и \myligOFF
ограничиваю его использование.
\documentclass{article}
\let\svO o
\newcommand\OOkern{\hspace{-.15em}}
\newcommand\myligON{\catcode`o=\active }
\newcommand\myligOFF{\catcode`o=11 }
{\catcode`o=\active \gdefo#1{\svO\ifxo#1\expandafter\OOkern\fi#1}}
\begin{document}
Book
\myligON Book hop \myligOFF
versus Book hop
\end{document}
решение2
Я бы не делал этого везде, только для спецэффекта в заголовках на дисплее. Но метод кернинга Ульрике Фишер объясняет наКак настроить параметры шрифта в LuaTeX?выполняет свою работу:
% compile with lualatex
\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.handlers.otf.addfeature{
name = "oooh",
type = "kern",
data =
{
["o"] = { ["o"] = -175 },
},
}
}
\setmainfont{Minion Pro}[RawFeature=+oooh]
\begin{document}
Look at the old book in the nook.
\end{document}
решение3
Решение XeTeX
, дополняющее ответ @Therese LuaTeX
, с использованием функции Interchartoks
:
\documentclass{article}
\XeTeXinterchartokenstate = 1
\newXeTeXintercharclass \mycharclasso
\XeTeXcharclass `\o \mycharclasso
% between "o" and "o":
\XeTeXinterchartoks\mycharclasso\mycharclasso={\kern-2.5pt }
\usepackage{fontspec}
\setmainfont{Minion Pro}
\begin{document}
\huge\centering Look at the old book in the nook.
\end{document}