使用 Graphite 渲染器和 LuaLaTeX 时变音符号放错位置。任何

使用 Graphite 渲染器和 LuaLaTeX 时变音符号放错位置。任何

我正在尝试使用 Graphite 字体排版一些 Kashur(克什米尔)文本,即人民报。以下是 MWE:

\documentclass[border=1cm]{standalone}
\usepackage[%
  english,%
  bidi              = {bidi-r}%
]{babel}
\usepackage{fontspec}
\newfontfamily\ksfnt[%
  IgnoreFontspecFile,%
  Extension         = {.ttf},%
  Renderer          = {Graphite}%
]{AwamiNastaliq-Regular}

\begin{document}
\ksfnt
یِہ (کوٗر) چھَےٚ اَم کھؠوَان۔
\end{document}

我需要 LuaLaTeX 的bidi支持,但不幸的是,渲染的变音符号达不到标准:

1

使用 LibreOffice 可以看到正确的输出:

2

有没有什么 LuaLaTeX 黑客可以解决这个问题?

我有已报告GitHub 上也有这个。

答案1

您可以通过传递RawFeature = {script=arab}字体来避免这种情况:

\documentclass{article}
\usepackage[%
  english,%
  bidi              = {bidi-r}%
]{babel}
\usepackage{fontspec}
\newfontfamily\ksfnt[%
  IgnoreFontspecFile,%
  Extension         = {.ttf},%
  Renderer          = {Graphite},%
  RawFeature        = {script=arab}
]{AwamiNastaliq-Regular}

\begin{document}
\ksfnt
یِہ (کوٗر) چھَےٚ اَم کھؠوَان۔
\end{document}

该变化源自 HarfBuzz 的变化,它使 Graphite 模式更加依赖脚本,因此现在您需要传递(至少大致)正确的脚本以获得正确的形状。通常您会使用选项来执行此fontspec操作Script = Arabic,但fontspec不会直接转发,因为字体不包含阿拉伯语的特定功能。

相关内容