Kashida(比迪烟)与 luatex 的当前状态如何?

Kashida(比迪烟)与 luatex 的当前状态如何?

我正在尝试找出如何在 Luatex(在 TexLive 中)中对双向文本进行 Kashida 对齐。

背景:

  • 我通过搜索发现支持可能出现在babel 这里但尚未实施。
  • 在 Xetex(bidixeperisan?)中,Kashida 对齐是通过\XetexInterCharToks使用 \hrule 而不是字形(这在字母连接中存在视觉问题)实现的。
  • 直接使用(拉伸)Kashida 字形或应用新的可变字体功能是两种选择。
  • 我还注意到\XetexInterCharToks可以以某种方式在 Luatex 中实现这里
  • 之前,我问过如何找到字符之间的粘合空间的宽度这里
  • 不知道,如果harfbuzz实现(对 Kashida 有任何支持?)可以相关。Harfbuzz 可以通过luahbtex 这里

编辑(关于 Kashida):

Kashida(源自波斯语中的 keshideh,意为“拉长”)是一种破折号式对齐方式,可以添加在阿拉伯语/波斯语/乌尔都语脚本中的某些字母之间(实际上是第一个字母的末尾)(可能还有希伯来语,参见这里)。其 Unicode 字符为 (U+0640),也称为阿拉伯语 Tatweel。

它有两个功能:

  1. 美观:更漂亮的排版和空白对齐的替代
  2. 它可以用来强调某些单词,以替代那些文字中不存在的大写字母或小型大写字母。

您可以根据需要多次手动添加默认字符 ((U+0640)):

کشیده
vs
کشیـــــــده

但是,(1) 使用任何 Kashida 字母都可能在搜索单词时产生问题,并且 (2) Keshida 的正确宽度不是字体中默认宽度的适当倍数。因此,正确的解决方案可能是使用可变字体技术。这也可以解决另一个问题,即 Kashida 并不总是可拉伸的破折号,但它可以/应该是可拉伸的曲线字形的一部分。

答案1

您可以使用TeXNegar包裹。

从该包的用户文档中:

TEXNegar 包在 LuaTeX 和 XeTeX 中实现了 kashida 对齐,并修复了 xepersian 中已知的错误。

相关内容