无法将 shaddah 变音符号添加到阿拉伯字母 (JavaScript)

Trouble adding the shaddah diacritic to an Arabic letter (JavaScript)

我的代码中的阿拉伯语变音符号 'shaddah' 有一些问题。

this.nfpp = this.pastTenseStem + this.roots[2] + "تُنَّ";

(我很抱歉这些字符太小了,我不确定如何让它变大。你可以看到 here shaddah 是一个 'w' 形状的小字符,它位于阿拉伯字母的顶部。在我的代码中,它位于字符串的第二个字母“ªُنَّ”中的 ц 上,因为阿拉伯语是从右到左阅读的。)

此代码应将字符串 pastTenseStem 的值加上一个字符串加上字符串“تُنَّ”的值赋给变量 nfpp。但是,当代码执行时,不会添加 Êُنَّ,而是添加 تُّنَ(shaddah 会更改它所在的字母)。我已经对其他不同类型的变音标记重复了这个过程,它们都按预期运行,除了这个。如果我删除 shaddah,只添加 Êُنو,那么事情会按预期再次运行。此外,在控制台中进行试验会产生预期的结果。

"فَعَل" + "ْتُنَّ"
>>'فَعَلْتُنَّ'

我在这里真的很困惑,所以我很感激任何帮助。谢谢!

在进行了更多的挖掘之后,我似乎找到了错误的原因,尽管没有解释为什么这可能会导致问题。问题是字体。通过查看拆分为字符数组的字符串,我可以看到一切都如我所料。更改字体证明了这一点。

Default font

Arial font

也就是说,字符串总是正确的,但字体渲染不正确。

万一有人遇到和我一样的问题,我最好的猜测是问题出在默认字体呈现 Ê 和 Å 组合的方式上。插入在两者之间的其他字母表现正常并正确呈现。

Example

即使延长两个字母之间的连接也会阻止字体以导致错误的方式呈现。 Example

此外,ب and ن 和其他元音标记也存在问题,而不仅仅是 fathah、dammah 和 kasrah,尽管 sukun 不存在。

总而言之,根据我的发现,当一个单词以带有 shaddah 和 fathah、kasrah 或 dammah 的 ave 结尾时,前面带有 Ê、ث、ب 或带有 a 的 ave fathah、kasrah 或 dammah,但不是 sukun,shaddah 从 Å 移动到它后面的任何字母。我不知道为什么,也不知道如何修复它,但更改字体对我来说是一个很好的解决方法。