0

在阿拉伯语中,字母根据组合词的位置而采用不同的形式(类似于草书)。但是,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");
4

1 回答 1

0

我不知道阿拉伯语:) 虽然在我的电脑上代码

import java.awt.Font;
import javax.swing.JOptionPane;

public class TestArabic
{

    public static void main(String[] args)
    {
        javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
        JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");
    }    
}

产生以下结果在此处输入图像描述

让我们看看它在 msjd 的阿拉伯语键盘在此处输入图像描述上产生了什么,而对于 msjd 它是在此处输入图像描述. 它与 JOptionPane.showMessageDialog 中的相同。

于 2014-11-28T11:23:21.573 回答