我存储了一些单词并分配给各自的unicodes。例如:
arasu "\u0C85\u0CA5\u0CB2\u0CC1";
aadalu "\u0C86\u0CA1\u0CB2\u0CC1";
上面带有unicodes的单词存储在文本文件中。每当我们从这个文本文件中访问单词和unicodes时,它必须以“kannada”语言显示单词。 首先,我们从文本文件中访问unicode,然后将该unicode分配给一个字符串。例如,如果我们通过在java程序中读取它并将其存储到字符串'str'中从文本文件中访问第一个unicode“\ u0C85 \ u0CA5 \ u0CB2 \ u0CC1”。现在string 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);
然后它必须以kannada语言显示输出。但现在它没有显示在kannada。它显示方框。如何解决这个问题。请帮助我们。
答案 0 :(得分:0)
方框表示"所选字体不支持此字形" (字形通常是一个字符)。
大多数字体都不提供完整(= all Unicode code points)。一个原因是它们中有很多(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支持(或者没有#n;支持页面。)
所以请尝试这样做:编写一个小型Java程序,调用font.canDisplay(int codePoint),其中codePoint必须是您想要的字符。从0x0CC1
开始,因为它似乎是一个普通角色。如果方法返回true
,则字体支持该字形。
要获取所有字体,请致电panel.getGraphis().getAvailableFontFamilyNames()
以获取名称列表。尝试每一个并打印font.canDisplay( 0x0cc1 )
返回true
的位置。
如果你想要"最好的"字体,计算支持0x0c82
和0xcf2
之间的字符数,并按该数字对字体列表进行排序。
答案 1 :(得分:0)
这里看起来不错:
您确定str
包含您所期望的内容,并确保在例如时间内没有字符编码问题读写文本文件?
答案 2 :(得分: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]
- 它回到了#34;对话框"字体系列因为我没有" Tunga"。
你可以看看
GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
查看可供您使用的字体。