\addfontfeature{FakeBold=...} 的行为很奇怪。没有 utf8 输出!

\addfontfeature{FakeBold=...} 的行为很奇怪。没有 utf8 输出!

我尝试在一个简单的文本中使用 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}

在此处输入图片描述

关于?,我认为这是一个复制粘贴的问题,依赖于操作系统。

相关内容