0

それぞれのユニコードに割り当てられているいくつかの単語を保存しました。例:

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

Unicode を含む上記の単語は、テキスト ファイルに保存されます。このテキスト ファイルから単語と Unicode にアクセスするたびに、単語を「カンナダ語」で表示する必要があります。まず、テキスト ファイルから Unicode にアクセスし、その Unicode を 1 つの文字列に割り当てます。たとえば、テキスト ファイルから最初の Unicode "\u0C85\u0CA5\u0CB2\u0CC1" にアクセスし、それを Java プログラムで読み取り、文字列 'str' に格納したとします。現在、文字列 str はユニコード "\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

ここでは問題ないようです:

ここに画像の説明を入力してください

str期待どおりの内容が含まれていて、テキストファイルの読み取りや書き込みなどの文字エンコードの問題がないことを確認しますか?

于 2012-05-04T15:47:56.197 に答える
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 コード ポイント)を提供していません。理由の 1 つは、それらの数が多いことです (Unicode 6.1 は 249,763 のコード ポイントを認識します)。もう 1 つの理由は、「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 に答える