字体Java阿拉伯语字符显示不正确
在阿拉伯语中,字母的形式取决于它们构成组合词的位置(类似于草书)。然而,Java不正确地显示了一些单词。它们似乎采用了正确的形式,但没有正确组合。以下是JOptionPane的结果。showMessageDialog
[1](编辑:下面的链接,low rep不允许我添加图片)
这些字母是从左到右写的M-S-J-D,注意最后两个J和D实际上是组合的
以下是使用乌尔都语排版字体(与我在程序中使用的字体相同)在记事本中书写时的正确格式 )۔
[2](编辑:下面的链接)
起初我以为这是因为我键盘上的字母与unicode(\uxxx)escape命令不同;尤其是因为你可以看到每一个字母在组合时的形状并不完全相同。我用键盘上的乌尔都语设置在记事本上打字,而这在JCreator中不起作用;我在使用逃生命令
然而,我在unicode中查找键盘的乌尔都语设置,它们与我在JCreator中使用的代码完全相同。然后我尝试使用Netbeans,因为它使用UTF-8编码(JCreator使用Cp1252),这次我直接在代码中键入字母,而不是使用escape命令,并在上面的第一张图片中得到了完全相同的结果
也不是所有的词都有这种行为。爸爸بابا 正确组合
为什么Java不能正确地组合这些词?我该如何修复它?提前谢谢
[1]http://i.stack.imgur.com/HEj9y.png [2] http://i.stack.imgur.com/TOUPF.png
编辑:哦,这是字符串,还有我用来设置字体的代码:
javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");
# 1 楼答案
我不懂阿拉伯语:)不过在我的电脑上
生成以下结果
让我们看看它在arabic keyboard上为msjd生成了什么,而对于msjd,它是。它与JOptionPane中的相同。showMessageDialog