我正在尝试找出如何在 Luatex(在 TexLive 中)中对双向文本进行 Kashida 对齐。
背景:
- 我通过搜索发现支持可能出现在
babel
这里但尚未实施。 - 在 Xetex(
bidi
或xeperisan
?)中,Kashida 对齐是通过\XetexInterCharToks
使用 \hrule 而不是字形(这在字母连接中存在视觉问题)实现的。 - 直接使用(拉伸)Kashida 字形或应用新的可变字体功能是两种选择。
- 我还注意到
\XetexInterCharToks
可以以某种方式在 Luatex 中实现这里。 - 之前,我问过如何找到字符之间的粘合空间的宽度这里。
- 不知道,如果
harfbuzz
实现(对 Kashida 有任何支持?)可以相关。Harfbuzz 可以通过luahbtex
这里
编辑(关于 Kashida):
Kashida(源自波斯语中的 keshideh,意为“拉长”)是一种破折号式对齐方式,可以添加在阿拉伯语/波斯语/乌尔都语脚本中的某些字母之间(实际上是第一个字母的末尾)(可能还有希伯来语,参见这里)。其 Unicode 字符为 (U+0640),也称为阿拉伯语 Tatweel。
它有两个功能:
- 美观:更漂亮的排版和空白对齐的替代
- 它可以用来强调某些单词,以替代那些文字中不存在的大写字母或小型大写字母。
您可以根据需要多次手动添加默认字符 ((U+0640)):
کشیده
vs
کشیـــــــده
但是,(1) 使用任何 Kashida 字母都可能在搜索单词时产生问题,并且 (2) Keshida 的正确宽度不是字体中默认宽度的适当倍数。因此,正确的解决方案可能是使用可变字体技术。这也可以解决另一个问题,即 Kashida 并不总是可拉伸的破折号,但它可以/应该是可拉伸的曲线字形的一部分。