perder ligaduras al cambiar la serie de fuentes o el color en medio de una palabra

perder ligaduras al cambiar la serie de fuentes o el color en medio de una palabra

Con fines pedagógicos, me gustaría resaltar algunos caracteres de una palabra, mediante negrita, color rojo o lo que funcione.

Debido a que uso fuentes de escritura a mano (Schulschriften alemana wedny cursiva francesa frcursive), estoy obligado a que las ligaduras funcionen bien. Desafortunadamente, las ligaduras se bloquean si cambias de serie o de color en medio de una palabra.

Estaría contento con una solución XeLaTeX o LuaLaTeX. Si es necesario, también con una solución PDFLaTeX. Y como dije, cualquier tipo de resaltado estaría bien.

Aquí el MWE:

\documentclass[varwidth]{standalone}
\usepackage[ngerman,frenchb]{babel}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setmonofont[Scale=.75]{Linux Libertine Mono O}
\setsansfont[Scale=MatchLowercase]{Linux Biolinum O}
\usepackage{wedn}
\newcommand{\schschrift}{\selectlanguage{ngerman} \wedn\upshape}
\usepackage{frcursive}    
\usepackage{xcolor}

\begin{document}
\newcommand{\fex}[3]{#1\textbf{#2}#3}
% \renewcommand{\fex}[3]{#1{\bfseries #2}#3}

{
\schschrift
\fex{W}{ö}{rter} -- Wörter
}
{
\cursive
\fex{incr}{oy}{able} -- incroyable
}

\renewcommand{\fex}[3]{#1\textcolor{red}{#2}#3}

{
\schschrift
\fex{W}{ö}{rter} -- Wörter
}
{
\cursive
\fex{incr}{oy}{able} -- incroyable
}

\renewcommand{\fex}[3]{#1#2#3}

{
\schschrift
\fex{W}{ö}{rter} -- Wörter
}
{
\cursive
\fex{incr}{oy}{able} -- incroyable
}
\end{document}

Puedes ver que, en las primeras 2 líneas, W y ö no se unen bien, así como r y o + y y a, cuando se ponen en negrita o en rojo. Compare con las versiones no resaltadas. ligaduras bloqueadas

Respuesta1

Puedes probar el paquete luacolor. No inserta lo que hay y por lo tanto no divide las ligaduras ni altera el interletraje. Pero no se puede colorear una parte de una ligadura de un color diferente al resto. Una ligadura es un glifo único y debe tener un solo color. Por lo tanto, puede obtener resultados bastante sorprendentes (el último ejemplo quizás sea un error):

\documentclass{article}
\usepackage[ngerman,french]{babel}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setmonofont[Scale=.75]{Linux Libertine Mono O}
\setsansfont[Scale=MatchLowercase]{Linux Biolinum O}
\usepackage{wedn}
\newcommand{\schschrift}{\selectlanguage{ngerman} \wedn\upshape}
\usepackage{frcursive}
\usepackage{xcolor}
\usepackage{luacolor}
\begin{document}

fi\textcolor{red}{ff}

f\textcolor{red}{if}f

\newcommand{\fex}[3]{#1\textcolor{red}{#2}#3}

{
\schschrift
W\textcolor{red}{ö}rter -- Wörter 
}

{\cursive i\textcolor{red}{croy} in\textcolor{red}{croy}
i\textcolor{red}{nc}roy}
\end{document}

Tenga cuidado con sus fuentes especiales: la codificación T1 no es adecuada para lualatex (y al menos una de las fuentes parece utilizar una codificación T1 no estándar).

ingrese la descripción de la imagen aquí

Respuesta2

Se me ocurrió una solución usando un color de fondo.

Básicamente, imprime la palabra dos veces una encima de la otra. Esto se logra con \rlapla primera impresión (no olvides el\leavevmode al principio de un párrafo, o utilizar \mbox[0pt]{l}{...}alternativamente). Esta primera impresión imprime la primera parte con \hphantom, luego la segunda parte (la resaltada) en gris sobre gris. Después de eso, la segunda impresión imprime la palabra completa en el color de primer plano normal encima, de modo que la parte central aparece en el color de primer plano sobre un fondo gris. Debido a que la presencia o ausencia de ligaduras cambia el ancho de la palabra (o partes de la palabra), la alineación entre las 2 versiones debe ajustarse manualmente mediante un poco de interletraje.

\documentclass[varwidth,landscape]{standalone}
\usepackage[ngerman,frenchb]{babel}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}

\usepackage{frcursive}
\usepackage{wela,wedn}
\newcommand{\schschrift}{\wedn\upshape\bfseries}

\usepackage{xcolor}

\definecolor{FR}{rgb}{.2717,.4566,.2717}
\definecolor{DE}{rgb}{.4566,.2717,.2717}
\definecolor{fond}{gray}{.8}
\setlength{\fboxsep}{.1pt}

\begin{document}    
{
\cursive\color{FR}

\leavevmode\rlap{%
  \hphantom{pa}\kern-.3ex%
  \colorbox{fond}{\textcolor{fond}{tt}}%
  }%
  patte

\leavevmode\rlap{%
  \hphantom{incr}\kern-.3ex%
  \colorbox{fond}{\textcolor{fond}{oy}}%
  }%
  incroyable
}
}

{
\selectlanguage{ngerman}\schschrift\color{DE}

\leavevmode\rlap{%
  \hphantom{W}%
  \colorbox{fond}{\textcolor{fond}{ö}}%
  }Wörter

\renewcommand{\schschrift}{\wela\upshape\bfseries}\schschrift\color{DE}

\leavevmode\rlap{%
  \hphantom{W}\kern-.3ex%
  \colorbox{fond}{\textcolor{fond}{ö}}%
  }Wörter
}
\end{document}

Captura de pantalla:

ingrese la descripción de la imagen aquí

Queda un problema: cuando el glifo se extiende más allá de su cuadro delimitador, puede parecer extraño, vea el <ö> del primero.Wörter. Pero estoy contento por ahora y no abriré una nueva pregunta sobre este tema menor.

Editar:

Gracias aesta respuesta, podría reemplazar el fondo \colorboxy su pequeño problema con una regla de las dimensiones correctas (necesita el paquete calc):

\leavevmode\rlap{%
  \hphantom{W}\kern-.3ex%
  \textcolor{fond}{\rule[\depthof{ö}*{-1}]{\widthof{ö}}{\totalheightof{ö}}}%
  }%
Wörter

ingrese la descripción de la imagen aquí

información relacionada