如何使用 XeLaTeX 修复波斯字体的渲染?

如何使用 XeLaTeX 修复波斯字体的渲染?

我正在尝试使用 XeLaTeX 和 IranNastaliq 字体排版一首诗,但很多单词的字形渲染都出现了问题。我有一个几年前从同一源 tex 文件渲染的 PDF 文件,没有这些问题。

下面是一个最小的例子:

%!TEX TS-program-xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{fontspec}
\newfontfamily\farsifont[Script=Arabic,Scale=10]{IranNastaliq}

\begin{document}
\farsifont
{\huge نگار}
\end{document}

这会在我的当前设置 (MacTeX BasicTeX 2014) 上生成左侧的图像。而右侧的图像是在其他程序(例如 TextEdit)中渲染的,也是我过去在旧电脑(也是 OS X)上使用 XeLaTeX 渲染的。

词语表达不当 良好的词语表达能力

什么原因导致了这个问题?我该如何调试它?

答案1

这种变化确实似乎是 HarfBuzz 库造成的。我注意到,在使用 HarfBuzz 的 Chrome 和 Firefox 中,字体渲染的版本相同,都是“糟糕”的,而使用 Apple 原生渲染的应用程序中,字体渲染的版本则是“良好”的。

我提交了HarfBuzz 中的错误,首席开发人员解释说,此字体使用了上下文花饰cswh,而默认情况下,OpenType 并未启用该功能。您可以在此处阅读有关此功能和其他适用于阿拉伯字体的 OpenType 功能的更多信息:https://www.microsoft.com/typography/OpenTypeDev/arabic/intro.htm

最后,我发现可以通过在字体规范中手动启用上下文花饰来解决问题。可以在此处找到有关在 LaTeX 中使用 OpenType 功能的良好指南:http://nitens.org/taraborelli/TeXOpenType

\newfontfamily\farsifont[Script=Arabic,Scale=10,Contextuals=Swash]{IranNastaliq}

好消息是,据我所知,这里似乎没有任何错误。

相关内容