有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

字体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) 个答案

  1. # 1 楼答案

    我不懂阿拉伯语:)不过在我的电脑上

    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");
        }    
    }
    

    生成以下结果enter image description here

    让我们看看它在arabic keyboard上为msjdenter image description here生成了什么,而对于msjd,它是enter image description here。它与JOptionPane中的相同。showMessageDialog