Möchten Sie eine Schrift etwas abdunkeln

Möchten Sie eine Schrift etwas abdunkeln

Ich sehe, dass meine Beschreibung möglicherweise irreführend war, daher hier eine überarbeitete Frage. Ich möchte „Hund“ nur ein wenig dunkler machen als den normalen Text. Ich möchte, dass es nicht annähernd so dunkel ist wie „Fuchs“. Ich verwende Fontspec mit Lualatex.

Ich versuche, die Kursivschrift einer Schriftart an eine andere anzupassen, die nur geringfügig dunkler ist. Kann ich das mit FakeBold machen? Im folgenden Beispiel ist „Hund“ genauso dunkel wie „Fuchs“, aber ich möchte es nur ein wenig abdunkeln.

(Ich verwende GentiumPlus hier nur als Beispiel. Es ist nicht meine tatsächliche Schriftart.)

\documentclass[12pt]{article}
\usepackage{fontspec}

\setmainfont{GentiumPlus}

\newfontfamily{\fbgentium}{GentiumPlus}[%
  ItalicFeatures={FakeBold=1.5},
  Scale = MatchLowercase]

% Want this to be just slightly dark
\newfontfamily{\ltgentium}{GentiumPlus}[%
  ItalicFeatures={FakeBold=1.05}, % specify a small amount here (tried 0.05)
  Scale = MatchLowercase]

\begin{document}
\itshape
The quick brown {\fbgentium fox}
jumps over the lazy {\ltgentium dog.}
\end{document}

Antwort1

Ich habe gerade Problem Nr. 498 an die GitHub-Seite für latex3/fontspec übermittelt. Verlinkt mit diesem Thread bei SE. Wenn sie sich bei mir melden, werde ich hier einen Kommentar hinterlassen. In der Zwischenzeit Workaround (funktioniert mit lualatex):

In den meisten Fällen, insbesondere bei Text in normaler oder annähernd normaler Größe, ist die visuelle Erscheinung der Strichstärke eher mit den vertikalen als mit den horizontalen Strichen verknüpft. Dies liegt daran, dass die meisten Zeichen dickere vertikale Striche haben.

Die fontspecEinstellung für FakeStretchfunktioniert gut. Sie skaliert lediglich horizontal, was eine einfache lineare Transformation ist und so fehlerfrei wie möglich ist. Für eine kleine Gewichtsänderung würde ich also FakeStretchvorerst verwenden und auf eine Lösung für warten FakeBold.

Wenn Sie auch die Stärke der horizontalen Striche ändern müssen, ist dies nicht mit möglich FakeStretch. Sie können aber bei Bedarf die Schriftgröße mit erhöhen ScaleAgainund mit dem FakeStretchWert ausgleichen.

Verwandter Hinweis: Ich verwende eine Kombination aus ScaleAgainund , FakeStretchum synthetische Kapitälchen für Schriftarten zu erstellen, die keine haben. Nicht perfekt, aber gut.

Antwort2

Beide TeX-Engines [XeTeX] und [LuaTeX mit luaotfload] unterstützen die Engine-implementierte Schriftfunktion embolden=decimal_numberfür OpenType-Schriftarten. Der PDF-Standard definiert zwei grundlegende Malroutinen für geschlossene Kurven: fillund stroke. Die fillRoutine fügt die Tinte nur innerhalb der geschlossenen Kurve ein und Strich zeichnet die Kurve mit einer Linie, deren Breite deklariert werden muss. Das Malen der Buchstaben von Schriftarten wird fillstandardmäßig nur von der Routine durchgeführt. Wenn die Engine-abhängige Schriftfunktion embolden=decimal numbereingestellt ist, werden die Buchstaben der verwendeten Schriftart von beiden Routinen gemalt: fillplus strokeund die Linienbreite der strokeRoutine ist auf eingestellt decimal_number/100 em.

Sie können beispielsweise Folgendes versuchen xetex:

\font\fa=[lmroman10-regular]
\font\fb=[lmroman10-regular]:embolden=1.7

\fa Default: only fill is used.

\fb Special: fill plus stroke is used.

\bye

Das LaTeX-Fontspec-Paket konvertiert seine spezifische Syntax intern FakeBold=decimal numberin die embolden=decimal_numberSchriftartfunktion.

Zur besseren Verdeutlichung der Funktionsweise der Füll- und Strichroutinen füge ich das folgende Bild hinzu:

Füllen und Konturieren

verwandte Informationen