
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 fontspec
Einstellung für FakeStretch
funktioniert 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 FakeStretch
vorerst 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 ScaleAgain
und mit dem FakeStretch
Wert ausgleichen.
Verwandter Hinweis: Ich verwende eine Kombination aus ScaleAgain
und , FakeStretch
um 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_number
für OpenType-Schriftarten. Der PDF-Standard definiert zwei grundlegende Malroutinen für geschlossene Kurven: fill
und stroke
. Die fill
Routine 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 fill
standardmäßig nur von der Routine durchgeführt. Wenn die Engine-abhängige Schriftfunktion embolden=decimal number
eingestellt ist, werden die Buchstaben der verwendeten Schriftart von beiden Routinen gemalt: fill
plus stroke
und die Linienbreite der stroke
Routine 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 number
in die embolden=decimal_number
Schriftartfunktion.
Zur besseren Verdeutlichung der Funktionsweise der Füll- und Strichroutinen füge ich das folgende Bild hinzu: