Como posso alterar o kerning entre duas letras específicas (e assim criar uma ligadura)?

Como posso alterar o kerning entre duas letras específicas (e assim criar uma ligadura)?

Estou fazendo um documento usando a fonte Minion Pro, que não possui uma ligadura 'oo' (ou seja, U+A74F: ꝏ). Gostaria, portanto, de criar artificialmente esta ligadura, reduzindo automaticamente o espaçamento entre qualquer ocorrência do par de letras 'oo'. Posso fazer isso manualmente e criar um comando (por exemplo \oo), mas isso seria bastante chato comparado à facilidade de outras ligaduras.

Abaixo está o efeito que eu gostaria, embora criado de maneira complicada:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Minion Pro}

\begin{document}
    \Huge
    Bo\hspace{-.15em}ok\par Book
\end{document}

insira a descrição da imagem aqui

Responder1

Aqui eu oativo o que você não quer em geral, então disponibilizo \myligONe \myligOFFlimito seu 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}

insira a descrição da imagem aqui

Responder2

Eu não faria isso em todos os lugares, apenas para efeitos especiais em títulos em tamanho de exibição. Mas o método de kerning Ulrike Fischer explica emComo ajustar recursos de fonte no LuaTeX?faz o trabalho:

% 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}

saída

Responder3

Uma XeTeXsolução para complementar a resposta de @Therese LuaTeX, aproveitando o Interchartoksrecurso:

\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

informação relacionada