![Latex 中的 setmainfont 和混合脚本](https://linux22.com/image/357634/Latex%20%E4%B8%AD%E7%9A%84%20setmainfont%20%E5%92%8C%E6%B7%B7%E5%90%88%E8%84%9A%E6%9C%AC.png)
我有一份混合了拉丁文和非洲文(提菲纳文)的文档。
\documentclass{book}
\usepackage{fontspec}
\setmainfont{Ebrima}
\begin{document}
ⵖⵉⴽⴽⴰⴷ ⵙ ⵎⵔⴰⵡ ⵉⵙⴳⴳⵯⴰⵙⵏ, ⵔⴰⴷ ⵢⵓⵜⵉ ⵍⵍⴱⴰⵙⵜⵉⴽ ⵉⵙⵍⵎⴰⵏ ⵖ ⵢⵉⵍⵍ.
Latin regular
\textbf{Latin bold}
\textit{Latin italics}
\end{document}
事实证明,拉丁文字可以正确显示为粗体,但无法显示为斜体。这是为什么呢?有没有一种方便的方法可以在一个文档中混合拉丁文字和非洲文字,同时仍保留适用于拉丁文字的斜体?
答案1
如果我前往Microsoft 的 Ebrima 排版页面,我看到了“其他变体:Ebrima Bold”,但没有斜体版本。我认为这就是问题的根源。我的电脑上没有 Ebrima,但我怀疑如果我尝试使用 Noto Sans Tifinagh,你会收到类似于我收到的警告消息:
LaTeX Font Warning: Font shape `EU1/NotoSansTifinagh(0)/m/it' undefined
(Font) using `EU1/NotoSansTifinagh(0)/m/n' instead on input line 1
和:
LaTeX Font Warning: Some font shapes were not available, defaults substituted.
这里的问题是,要使用\textit{...}
,您需要有斜体字体,而 Ebrima 似乎没有。同样,要使用 ,\textbf{...}
您需要有粗体字体。有趣的是,Ebrima 似乎有其中一种,这就是为什么\textbf{...}
有效而\textit{...}
无效的原因。
很多人没有意识到斜体字其实并不只是斜体字。相反,它是一种完全不同的字体,每个字符都有完全不同的版本,专门设计成看起来像斜体手写体:
在印刷术中,斜体是一种基于书法手写风格的草书字体。由于受到书法的影响,斜体通常略微向右倾斜。
因此,许多高质量(以及一些不太高质量的)字体都会带有专门设计的斜体变体。
粗体其实也一样。你可以很轻松地伪造粗体,但你无法获得与定制粗体字符相同的高质量结果。然而,当我们使用斜体时,这一点尤其明显,许多字体都有带有完全不同字符的斜体变体。
然而,很多人都习惯了 Microsoft Word(和其他所见即所得程序)的魔力我按钮。它的作用是选择字体的斜体变体(如果存在),但如果不存在,它只会用一点倾斜来伪造它,本质上是产生斜型,而不是真正的斜体。然而,再次,与粗体一样,最好的结果将从定制的倾斜/倾斜变体中获得,并且一些字体也带有其中一种,而不是将其留给某种算法。
总而言之,你正在设置文档以使用 Ebrima
\setmainfont{Ebrima}
然后你试图用 得到一些“斜体” \textit{}
。问题是,当你使用 时\textit{}
,XeLaTeX 会尝试使用斜体变体,但天哪,没有这种变体。所以它会替换下一个最合适的变体,不幸的是,它只是直立版本。那么我们能做些什么呢?好吧,就像 Microsoft Word 一样,我们也可以伪造它:
\setmainfont[AutoFakeSlant=4.0]{Ebrima}
\textit{}
现在将为您提供倾斜类型,尽管它可能看起来不如字体本身带有专门设计的倾斜变体那么好。
但是,从评论来看,您真正想要的并不是将整个文档设置为 Ebrima,而只是使用 Tifinagh 字体来表示 Tifinagh,因为默认的 Computer Modern 字体不支持 Tifinagh。好吧,这没问题,但是,您确实需要引入字体切换声明 - 否则 XeTeX 如何知道您想要使用不同的字体?因此,您要为此做的是:
\documentclass{book}
\usepackage{fontspec}
\newfontfamily{\TI}[AutoFakeSlant=0.3]{Noto Sans Tifinagh}
\begin{document}
Hello world, here is some English. {\TI ⵖⵉⴽⴽⴰⴷ ⵙ ⵎⵔⴰⵡ ⵉⵙⴳⴳⵯⴰⵙⵏ ⵔⴰⴷ
ⵢⵓⵜⵉ ⵍⵍⴱⴰⵙⵜⵉⴽ ⵉⵙⵍⵎⴰⵏ ⵖ ⵢⵉⵍⵍ} \textit{Back to English. But this
time, it's italic.} \textit{{\TI ⵖⵉⴽⴽⴰⴷ ⵙ ⵎⵔⴰⵡ ⵉⵙⴳⴳⵯⴰⵙⵏ ⵔⴰⴷ ⵢⵓⵜⵉ
ⵍⵍⴱⴰⵙⵜⵉⴽ ⵉⵙⵍⵎⴰⵏ ⵖ ⵢⵉⵍⵍ}}
\end{document}
我按照您的要求使用了AutoFakeSlant
提非纳语的“斜体”选项,但值得注意的是,草书斜体实际上是适用于某些字母的西方概念。我怀疑提非纳语的草书形式是否类似于真正的拉丁斜体,但我确信提非纳语使用了斜体,就像英语和许多其他语言一样,而这正是您得到的AutoFakeSlant
,但这确实是一个相当迂腐的脚注。