Verlust von Ligaturen beim Wechsel der Schriftart oder -farbe mitten im Wort

Verlust von Ligaturen beim Wechsel der Schriftart oder -farbe mitten im Wort

Aus pädagogischen Gründen möchte ich einige Buchstaben eines Wortes hervorheben, durch Fettdruck, Rot oder was auch immer funktioniert.

Da ich Handschriftschriften (deutsche Schulschriften wednund französische Schreibschrift frcursive) verwende, bin ich darauf angewiesen, dass Ligaturen gut funktionieren. Leider werden Ligaturen blockiert, wenn man mitten im Wort die Reihe oder Farbe wechselt.

Ich wäre mit einer XeLaTeX- oder LuaLaTeX-Lösung zufrieden. Bei Bedarf auch mit einer PDFLaTeX-Lösung. Und wie gesagt, jede Art von Hervorhebung wäre in Ordnung.

Hier die 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}

Sie können sehen, dass in den ersten beiden Zeilen W und ö sowie r und o + y und a nicht gut zusammenpassen, wenn sie fett oder rot gedruckt sind. Vergleichen Sie mit den nicht hervorgehobenen Versionen. Ligaturen blockiert

Antwort1

Sie können das Paket luacolor ausprobieren. Es fügt keine Dingsbumse ein und spaltet daher keine Ligaturen und stört auch nicht das Kerning. Es kann jedoch nicht einen Teil einer Ligatur in einer anderen Farbe als den Rest einfärben. Eine Ligatur ist ein einzelnes Glyph und muss eine einzige Farbe haben. Sie können also recht überraschende Ergebnisse erhalten (das letzte Beispiel ist möglicherweise ein Fehler):

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

Seien Sie vorsichtig mit Ihren speziellen Schriftarten: Die T1-Kodierung ist für Lualatex nicht gut geeignet (und zumindest die Schriftarten scheinen eine nicht standardmäßige T1-Kodierung zu verwenden).

Bildbeschreibung hier eingeben

Antwort2

Ich habe eine Lösung mit einer Hintergrundfarbe gefunden.

Im Grunde wird das Wort zweimal übereinander gedruckt. Dies wird erreicht mit \rlapfür den ersten Ausdruck (vergessen Sie nicht die\leavevmode ganz am Anfang eines Absatzes, oder \mbox[0pt]{l}{...}alternativ verwenden). Dieser erste Ausdruck druckt den ersten Teil mit \hphantom, dann den zweiten Teil (den hervorgehobenen) in Grau auf Grau. Danach druckt der zweite Ausdruck das ganze Wort in der normalen Vordergrundfarbe darüber, so dass der mittlere Teil in der Vordergrundfarbe über einem grauen Hintergrund erscheint. Da das Vorhandensein oder Fehlen von Ligaturen die Breite des Wortes (oder der Wortteile) ändert, muss die Ausrichtung zwischen den beiden Versionen manuell durch ein wenig Kerning angepasst werden.

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

Bildschirmfoto:

Bildbeschreibung hier eingeben

Ein Problem bleibt jedoch: Wenn die Glyphe über ihren Begrenzungsrahmen hinausragt, kann sie seltsam aussehen, siehe das <ö> des erstenWörter. Aber ich bin vorerst zufrieden und werde zu dieser Kleinigkeit keine neue Frage stellen.

Bearbeiten:

Dank andiese Antwort, ich könnte den Hintergrund \colorboxund sein kleines Problem durch ein Lineal mit den richtigen Abmessungen ersetzen (benötigt das Paket calc):

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

Bildbeschreibung hier eingeben

verwandte Informationen