\documentclass{article}
\usepackage{multicol,polyglossia,fontspec}
\setmainlanguage{sanskrit}
\setmainfont[Script=Devanagari]{Sanskrit 2003}
\begin{document}
अ आ इ ई उ ऊ ऋ ए ऐ ओ औ अं अः
\end{document}
如果我在 Texlive 2016 中使用 xelatex 编译上述示例,我会收到以下字体警告消息
字体规范警告:“脚本不存在”
字体“Sanskrit 2003”不包含脚本“Devanagari”。
这是什么原因造成的?我该如何解决?在 Texlive 2014 中我没有遇到这个问题。
答案1
我也收到了警告。问题是它Script=Devanagari
映射到两个开放类型脚本标签。在 fontspec-xetex.sty 中,您可以找到:
\newfontscript{Devanagari}{dev2,deva}
Sanskrit 有该deva
功能,但没有该dev2
特性,当它(首先)检查该特性时dev2
会触发警告。恕我直言,这个警告令人困惑,但无害。您可以通过在 fontspec 后添加以下内容来交换检查顺序,从而避免出现此问题:
\newfontscript{Devanagari}{deva,dev2}
dev2
但是如果您使用带有;-( 的字体,您可能会再次遇到这种情况。
更好的解决方案是,如果 fontspec 仅在处理完完整列表后才发出警告。