%3F.png)
Estoy creando un documento usando la fuente Minion Pro, que carece de una ligadura 'oo' (es decir, U+A74F: ꝏ). Por lo tanto, me gustaría crear artificialmente esta ligadura reduciendo automáticamente el espacio entre cualquier aparición del par de letras 'oo'. Puedo hacer esto manualmente y crear un comando (por ejemplo \oo
), pero eso sería bastante molesto en comparación con la facilidad de otras ligaduras.
A continuación se muestra el efecto que me gustaría, aunque sea complicado de crear:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Minion Pro}
\begin{document}
\Huge
Bo\hspace{-.15em}ok\par Book
\end{document}
Respuesta1
Aquí, activo o
lo que no deseas en general, por lo que proporciono \myligON
y \myligOFF
limito su uso.
\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}
Respuesta2
No haría esto en todas partes, solo para lograr efectos especiales en títulos en tamaño de visualización. Pero el método de kerning que explica Ulrike Fischer en¿Cómo ajustar las funciones de fuente en LuaTeX?hace el trabajo:
% 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}
Respuesta3
Una XeTeX
solución para complementar la respuesta de @Therese LuaTeX
, haciendo uso de la Interchartoks
función:
\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}