想讓字體變暗一點

想讓字體變暗一點

我發現我的描述可能有誤導性,所以這是一個修改後的問題。我想讓“dog”比普通文字暗一點。我不希望它像“狐狸”一樣黑暗。我正在將 fontspec 與 lualatex 一起使用。

我正在嘗試將一種字體的斜體與另一種稍暗的字體相匹配。我可以用 FakeBold 做到這一點嗎?在下面的範例中,「dog」與「fox」一樣暗,但我只想將其變暗一點。

(這裡使用 GentiumPlus 只是作為範例。這不是我的實際字體。)

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

答案1

我剛剛向 Latex3/fontspec 的 GitHub 頁面提交了問題 #498。連結到 SE 的此線程。當他們回覆我時,我會在這裡發表評論。同時,解決方法(與 lualatex 一起使用):

在大多數情況下,特別是對於正常或接近正常大小的文本,粗細的視覺外觀與垂直詞幹的關係比與水平詞幹的關係更密切。這是因為大多數字元都有較粗的垂直詞幹。

設定fontspec效果FakeStretch很好。它所做的只是水平縮放,這是一個簡單的線性變換,盡可能沒有錯誤。因此,對於較小的重量變化,我FakeStretch現在會使用,並等待 的解決方案FakeBold

如果您還必須更改水平莖的重量,則無法透過 來完成FakeStretch。但如有必要,您可以使用該值來增加字體大小ScaleAgain並進行補償FakeStretch

ScaleAgain相關註釋:我使用和的組合FakeStretch來創建合成小型大寫字母,用於沒有它們的字體。不完美,但是很好。

答案2

embolden=decimal_numberTeX 引擎 [XeTeX] 和 [LuaTeX with luaotfload] 都支援OpenType 字型的引擎所實現的字型功能。 PDF 標準定義了閉合曲線的兩個基本繪製例程:fillstroke。例程fill僅在閉合曲線內部插入墨水,筆畫以直線繪製曲線,必須聲明其寬度。預設情況下,字體字母的繪製僅按常規完成fill。當設定了與引擎相關的字體功能時embolden=decimal number,所使用字體的字母將由兩個例程繪製:fillplus stroke,並且例程的線寬stroke設定為decimal_number/100 em

例如,您可以嘗試使用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

LaTeX fontspec 套件在內部將其特定語法轉換FakeBold=decimal numberembolden=decimal_number字體功能。

為了更清楚地了解填充和描邊例程的工作原理,我添加了以下圖像:

填充和描邊

相關內容