
我嘗試在簡單的文本中使用 fontspec 的 FakeBold 功能,將拉丁字母與希臘字母混合在同一個字中。我的問題是輸出看起來像是 Utf8 但實際上不是!我注意到,當我嘗試在文字編輯器(TeXworks)中複製並貼上以下程式碼的輸出時,1)某些字元在? 2)第一個字 Γεννaται(粗體)和第二個字之間沒有空格
(在我的例子中,輸出是 ГεννaταιГεννaται Гενν?ται)
你能給我解釋一下這種奇怪的行為嗎?
\documentclass[letterpaper, 12pt]{article}
\usepackage[no-math]{fontspec}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setmainfont{Arial}
\begin{document}
\addfontfeature{FakeBold=2}Γεννaται\addfontfeature{FakeBold=0} Γεννaται Γεννάται
\end{document}
註:以上每一行在 TeXworks 中都寫在不同的行中。我使用 MikTeX 和 XeLaTeX 引擎。
答案1
這個指令\addfontfeatures{...}
會吞噬其後面的空格,這通常是一件好事;使用
\addfontfeature{FakeBold=2}Γεννaται\addfontfeature{FakeBold=0}\ Γεννaται Γεννάται
如果你真的想使用這種尷尬的風格。一般來說,\addfontfeatures
應該謹慎使用,並且(幾乎)永遠不要在文件中使用。此外,由於它尊重分組,所以
{\addfontfeature{FakeBold=2}Γεννaται} Γεννaται Γεννάται
會更容易。
不過,這應該會更好
\textbf{Γεννaται} Γεννaται Γεννάται
所有範例排版相同
如果您的字體沒有粗體,請在字體設定中定義它。我將以 EB Garamond 為例
\documentclass[letterpaper, 12pt]{article}
\usepackage[no-math]{fontspec}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setmainfont{EB Garamond}[
BoldFont=*,
BoldFeatures={FakeBold=4},
]
\begin{document}
\textbf{Γεννaται} Γεννaται Γεννάται
\end{document}
關於?
,我認為這是複製貼上的問題,取決於作業系統。