当结合三个字符ക(\ u0D15)+്(\ u0D4D)+ര(\ u0D30),获得ര്ക而不是രര

时间:2013-02-19 05:24:42

标签: java swing unicode fonts editor

我正在为Java中的Malayalam编写文本编辑器。

Unicode字体在Swing中无法正确呈现 - JTextArea。 字符组合。而不是混合两个字符,文本区域单独显示它。 swing和font都支持这些字符,但是在键组合中它不起作用即使使用了支持的字体。 例如:

需要什么

ക്രാ 

得到什么

്രക

代码

jButton69.setFont(new java.awt.Font("Meera", 0, 12)); // NOI18N
        jButton69.setText(" ്ര");

    jTextArea1.append(jButton69.getText());

编辑:(作者评论的补充资料):

当结合三个字符ക(\ u0D15)+്(\ u0D4D)+ര(\ u0D30)时,我得到了ര്ക而不是രര。

语言是Malayalam,Font是Meera

3 个答案:

答案 0 :(得分:0)

您必须将JTextArea字体设置为Unicode字体。

除此之外,button69与问题无关,所以我不使用它。

以下代码以您希望的方式显示文本:

String problemText = "ഔ";
Font font = new Font("Arial Unicode MS", Font.PLAIN, 18);
JTextArea jTextArea1 = new JTextArea();
jTextArea1.setFont(font);
jTextArea1.append(problemText);

我希望它有所帮助。

答案 1 :(得分:0)

请查看零宽度连接器和零宽度非连接器。根据您的要求,我使用零宽度连接器得到了正确的输出:\ u0d15 + \ u0d4d + \ u200d + \ u0d30。

答案 2 :(得分:0)

请查看零宽度连接器和零宽度非连接器。根据您的要求,我通过使用零宽度连接器得到正确的输出:\ u0d15 + \ u0d4d + \ u200d + \ u0d30(请忽略我以前的答案,它是相同的但是使用错误的用户帐户发布)。