我无法使用 Babel 显示非拉丁字符

我无法使用 Babel 显示非拉丁字符

更新:写完这篇文章后,我做了一些最后一刻的测试,这似乎破坏了我的最小工作示例。

如果我删除(注释掉) 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}{

相关内容