在阿拉伯语中,字母根据组合词的位置而采用不同的形式(类似于草书)。但是,Java 显示某些字词不正确。它们似乎采用了正确的形式,但没有正确组合。这是 JOptionPane.showMessageDialog 的结果
[1](编辑:下面的链接,低代表不允许我添加图片)
这些字母是从左到右写的 MSJD - 请注意最后两个 J 和 D 实际上组合了 ۔م س ج د
这是使用乌尔都语排版字体(与我在程序中使用的字体相同)在记事本中编写时的正确格式۔
[2](编辑:下面的链接)
起初我以为是因为我键盘上的字母与 unicode (\uXXXX) 转义命令不同;尤其是因为您可以看到,如果将它们组合在一起,每个字母的形状并不完全相同。我使用键盘的乌尔都语设置在记事本中输入,而这在 JCreator 中不起作用;我正在使用转义命令。
但是,我查找了键盘乌尔都语设置的 unicode,它们与我在 JCreator 中使用的代码完全相同。然后我尝试使用 Netbeans,因为它以 UTF-8 编码(JCreator 使用 Cp1252),这次我直接在代码中输入字母而不是使用转义命令,并在上面的第一张图片中得到完全相同的结果。
也不是所有的词都有这种行为。Baba ب ا ب ا 正确组合。
为什么 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");