更新:写完这篇文章后,我做了一些最后一刻的测试,这似乎破坏了我的最小工作示例。
如果我删除(注释掉) MWE 中的 \usepackage{Alegreya} 行,一切都会正常工作。
但是,在我的实际文档中,这并没有解决问题。该文档加载了许多其他软件包,当我逐个删除它们以缩小 MWE 的范围时,这只指向了 \usepackage{Alegreya} 行。(删除该行不会影响正文字体,它由 \setmainfont{Alegreya} 命令设置。
所以我想我需要更多指导如何解决此问题,以及我可能做错了什么。以下是我最初编写的查询和我的 MWE 代码。谢谢。
我的英语文档中有几个需要非拉丁字符的例子:希腊语、中文、希伯来语。
(希伯来语是从右到左的,所以现在我只研究另外两种。)
我的 MWE 改编自 Babel 包文档(babel.pdf)第 8 页第 1.3 节“主要是单语文档”中的示例。
\documentclass[letterpaper,10pt,index=toc]{scrbook} % {book} class doesn't change result
\usepackage{microtype}
\usepackage{fontspec}
\usepackage{Alegreya} % Greek, Chinese characters display if this is commented out
\setmainfont{Alegreya}
\setmainfont{Alegreya}
\usepackage{babel}
\babelfont[russian]{rm}{FreeSerif}
\babelfont[greek]{rm}{FreeSerif}
\babelfont[chinese]{rm}{NotoSerif} % `sc' at end refers to simplified Chinese
\begin{document}
Main font Alegreya
\foreignlanguage{russian}{Русский},
\foreignlanguage{spanish}{Español},
\foreignlanguage{greek}{
答案1
您希望\babelfont
始终使用,而不是将其与 混合使用\setmainfont
。如果您以这种方式加载 Alegreya,则您也不需要\usepackage{alegreya}
。
\documentclass[letterpaper,10pt,index=toc]{scrbook} % {book} class doesn't change result
\usepackage[russian, spanish, english]{babel}
\usepackage{fontspec}
\usepackage{microtype}
\defaultfontfeatures{ Scale=MatchUppercase, Ligatures=TeX }
\babelfont{rm}
[Scale=1.0, Ligatures=Common]{Alegreya} % The default, used for Spanish and English.
\babelfont[russian]{rm}
[Language=Default]{FreeSerif}
\babelprovide[import=el]{greek} % Or import=el-polyton for polytonic Greek.
\babelfont[greek]{rm}
[Language=Default]{FreeSerif}
\babelprovide[import=zh-hans]{chinese} % Simplified Chinese
\babelfont[chinese]{rm}
[Renderer=HarfBuzz]{Noto Serif CJK sc} % `sc' at end refers to simplified Chinese
\begin{document}
Main font Alegreya
\foreignlanguage{russian}{Русский},
\foreignlanguage{spanish}{Español},
\foreignlanguage{greek}{