¿Cómo puedo cambiar el interletraje entre dos letras específicas (y así crear una ligadura)?

¿Cómo puedo cambiar el interletraje entre dos letras específicas (y así crear una ligadura)?

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}

ingrese la descripción de la imagen aquí

Respuesta1

Aquí, activo olo que no deseas en general, por lo que proporciono \myligONy \myligOFFlimito 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}

ingrese la descripción de la imagen aquí

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}

producción

Respuesta3

Una XeTeXsolución para complementar la respuesta de @Therese LuaTeX, haciendo uso de la Interchartoksfunció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}

texto ligado

información relacionada