6

我正在为 Java 中的马拉雅拉姆语编写文本编辑器。

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

需要什么

ക്രാ 

正在得到什么

്രക

代码

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

    jTextArea1.append(jButton69.getText());

编辑:(来自作者评论的补充信息):

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

语言是马拉雅拉姆语,字体是 Meera

4

3 回答 3

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

我希望它有所帮助。

于 2013-02-22T15:31:36.940 回答
0

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

于 2013-07-14T12:26:46.543 回答
0

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

于 2013-07-14T12:46:18.227 回答