0

我存储了一些单词并分配给相应的 unicode。例如:

arasu "\u0C85\u0CA5\u0CB2\u0CC1";
aadalu "\u0C86\u0CA1\u0CB2\u0CC1";

上述带有 unicode 的单词存储在文本文件中。每当我们从这个文本文件中访问单词和 unicode 时,它​​必须以“kannada”语言显示单词。首先,我们从文本文件中访问 unicode,然后将该 unicode 分配给一个字符串。例如,如果我们通过在 java 程序中读取文本文件中的第一个 unicode "\u0C85\u0CA5\u0CB2\u0CC1" 并将其存储到字符串 'str' 中来访问它。现在字符串 str 的 unicode 为“\u0C85\u0CA5\u0CB2\u0CC1”。如果我们在下面的代码中传递这个字符串

JFrame frame= new JFrame("TextArea frame");
GraphicsEnvironment.getLocalGraphicsEnvironment();
Font font= new Font("Tunga",Font.PLAIN,40);
JPanel panel=new JPanel();
JTextArea jt=new JTextArea(str);
jt.setFont(font);
frame.add(panel);
panel.add(jt);
frame.setSize(250,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

然后它必须以卡纳达语显示输出。但现在它没有在卡纳达语中显示。它显示方形框。如何解决这个问题。请帮助我们。

4

3 回答 3

0

您的 Java 环境可能不包含名为“Tunga”的字体,而是您获得了某种默认字体(不支持您需要的字形)。

做完之后

Font font= new Font("Tunga",Font.PLAIN,40);

你会有一些字体,但不一定完全符合你的要求。您可以尝试记录结果以查看您的位置:

System.out.println("Font = "+font);

例如,在我的机器上,它记录:

Font = java.awt.Font[family=Dialog,name=Tunga,style=plain,size=40]

-- 因为我没有“Tunga”,所以它回退到“Dialog”字体系列。

你可以看看

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

查看您可以使用哪些字体。

于 2012-05-04T15:51:24.867 回答
0

方框表示“所选字体不支持此字形”(字形通常是一个字符)。

大多数字体不提供完整的(=所有 Unicode 代码点)。一个原因是它们有很多(Unicode 6.1 知道 249,763 个代码点)。另一个是“Unicode”是一个不断发展的标准,当新字符出现时,字体不会神奇地“更新”自己。

您的解决方案是使用提供更多字形的字体。

如果你在 Windows 上,试试“Arial”——它有相当不错的 Unicode 支持。

一个便宜的测试是下载 HTML 页面http://www.alanwood.net/unicode/kannada.html并将不同的字体名称放入这个 CSS 元素中:

td.b {font-size:1.8em;}

要试用 Arial,请使用以下代码:

td.b {font-size:1.8em; font-family: Arial;}

替换字体名称,直到您对结果满意为止。如果字体名称包含空格,则需要引用名称:

td.b {font-size:1.8em; font-family: "Times New Roman";}

[编辑] jarnbjo刚刚提到,如果您想要的字体不支持 unicode(或不支持页面),大多数浏览器都会为您选择不同的字体。

所以试试这个:编写一个调用font.canDisplay(int codePoint)的小型 Java 程序,其中 codePoint 必须是您想要的字符。从它开始,0x0CC1因为它似乎是一个常见的字符。如果方法返回true,则字体支持该字形。

要获取所有字体,请调用panel.getGraphis().getAvailableFontFamilyNames()以获取名称列表。font.canDisplay( 0x0cc1 )尝试每一个并打印返回的那些true

如果您想要“最佳”字体,请计算支持的和之间的字符数0x0c820xcf2并按该数字对字体列表进行排序。

于 2012-05-04T15:35:10.277 回答
0

这里看起来不错:

在此处输入图像描述

您确定其中str包含您期望的内容并且在读取和写入文本文件时没有字符编码问题吗?

于 2012-05-04T15:47:56.197 回答