以下文档在 XeTeX 中打印阿拉伯字母的中间形式,这要归功于两个 ZWJ 字符(“200D”。
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=Arabic]{Arabic Typesetting}
\begin{document}
\char"200Dي\char"200D
\end{document}
然而,在 LuaTeX 中我得到:
ZWJ 的两个字形实际上在字体中,但它们不应该显示。我该如何隐藏它们?
编辑。对于这种特殊情况,可以采取以下措施:
\documentclass{article}
\usepackage{luatextra}
\usepackage{fontspec}
\setmainfont[Script=Arabic]{Arabic Typesetting}
\begin{luacode*}
s = 'EU2/ArabicTypesetting(0)/m/n/10'
local i = font.id(s)
local f = font.getfont(i)
f.characters[8205].index = 3
font.setfont(i, f)
\end{luacode*}
\begin{document}
\char"200Dي\char"200D
ي\char"200D
\char"200Dي
ي
\end{document}
不过,我仍然想知道是否存在一种基于简单开关的更优雅、更通用的方法。
答案1
LuaTeX 现在有了 HarfBuzz。渲染正常。
平均能量损失
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Script=Arabic]{Arabic Typesetting}
\begin{document}
\begin{tabular}{rr}
\char"200Dي\char"200D & \textdir TRT ي ييي \\
\char"200Dب\char"200D & \textdir TRT ب ببب\\
\char"200Dش\char"200D & \textdir TRT ش ششش\\
\end{tabular}
\end{document}