在 Texlive 2016 中排版天城文文本时出现问题

在 Texlive 2016 中排版天城文文本时出现问题
\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 仅在处理完完整列表后才发出警告。

相关内容