对于阿拉伯字体天方夜谭,如何解决此警告
软件包 fontspec 警告:字体(fontspec)‘ScheherazadeNew’ 和脚本‘Arabic’ 不支持语言‘Arabic’。
对于以下文档
\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont[Ligatures = {NoCommon, NoRare}]{Latin Modern Roman}
\newfontfamily\arabicfont{ScheherazadeNew}[ Script = Arabic, RawFeature={+anum}]
\usepackage[english, bidi = basic, layout = lists]{babel}
\babelprovide[import, onchar = ids fonts]{arabic}
\babelfont[arabic]{rm}[Scale = 1]{ScheherazadeNew}
\babelfont[arabic]{sf}[Scale = 1]{ScheherazadeNew}
\begin{document}
\end{document}
此外,使用\newfontfamily\arabicfont
和是否是多余的\babelfont[arabic]
?或者每个都有不同的功能?
答案1
对于 LuaLaTeX 来说,MWE 看起来基本正确。您不需要同时使用\babelfont
和\arabicfont
:第一个是babel
您使用的 ,第二个是您要与 一起使用的polyglossia
。
但是,您确实希望添加\babelfont{rm}{Latin Modern Roman}
而不是\setmainfont{Latin Modern Roman}
,以便babel
在英语和阿拉伯语字体之间正确切换。您还可能希望将两种字体缩放到相同的高度,而不是Scale=1.0
。
关于字体不包含语言的警告Arabic
通常是无害的。字体通常不会费心定义不会改变任何内容的语言标签,例如希腊语用于希腊文字或希伯来语用于希伯来文字。在这种情况下,字体设计者没有费心为阿拉伯文字声明阿拉伯语言,也没有让文件稍微大一点,因为这已经是阿拉伯文字的默认设置。您可以通过加载具有该Language=Default
功能的字体来隐藏该消息。(在您当前拥有的同一位置Scale=1.0
。)
因此这可能对你有用:
\documentclass[12pt,a4paper]{article}
\tracinglostchars=3 % Make it an error if a glyph is missing from the current font
\usepackage[english, bidi = basic, layout = lists]{babel}
\usepackage{fontspec} % For \defaultfontfeatures
\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
\babelprovide[import, onchar = ids fonts]{arabic}
% Scheherazade New is available at:
% https://software.sil.org/scheherazade/
\babelfont{rm}
[Ligatures={Common,Rare}, Scale=1.0, Language=Default]{Latin Modern Roman}
\babelfont[arabic]{rm}
[Language=Default]{ScheherazadeNew}
\babelfont{sf}
[Ligatures={Common,Rare}, Language=Default]{Latin Modern Sans}
\babelfont[arabic]{sf}
[Language=Default]{ScheherazadeNew}
\begin{document}
Latin Modern Roman and
شهرزاد
\end{document}
这里的主要区别是,它Scale=1.0
仅添加到主字体,并将文档中的所有其他字体缩放到相同的 x 高度\defaultfontfeatures
。
您仍会收到有关使用默认tt
(等宽)字体系列的警告。如果您需要等宽阿拉伯语,阿拉伯拉丁现代固定字体与拉丁现代字体非常匹配。
您可能还会看看《新计算机现代书》,这是《计算机现代》的另一本克隆书,比《拉丁现代》稍厚一些。