アラビア語では、結合された単語を形成する場所に応じて、文字が異なる形式をとります (筆記体に似ています)。ただし、Java では一部の単語が正しく表示されません。それらは正しい形をとっているように見えますが、正しく組み合わされていません。JOptionPane.showMessageDialog の結果は次のとおりです。
[1] (編集: 以下のリンク、担当者が少ないと写真を追加できません)
これらの文字は左から右に書かれた MSJD であり、最後の 2 つの J と D が実際に結合したことに注意してください。
以下は、Urdu Typesetting フォント (私のプログラムで使用しているフォントと同じです) を使用してメモ帳に記述した場合の正しい形式です۔
[2] (編集: 以下のリンク)
最初は、キーボードからの文字が Unicode (\uXXXX) エスケープ コマンドと異なっていたためだと思いました。特に、組み合わせた場合、それぞれの文字がまったく同じ形にならないことがわかるため. キーボードのウルドゥー語設定を使用してメモ帳に入力しましたが、JCreator では機能しません。エスケープコマンドを使用していました。
しかし、キーボードのウルドゥー語設定のユニコードを調べたところ、JCreator で使用していたコードとまったく同じでした。次に、UTF-8 でエンコードされる (JCreator は Cp1252 を使用する) Netbeans を使用してみました。今回は、エスケープ コマンドを使用する代わりにコードに直接文字を入力し、上の最初の画像とまったく同じ結果を得ました。
すべての単語がこの動作をするわけではありません。Baba ب ا ب ا は正しく結合します。
Java がこれらの単語を正しく組み合わせないのはなぜですか?どうすれば修正できますか? 前もって感謝します!
[1] http://i.stack.imgur.com/HEj9y.png [2] http://i.stack.imgur.com/TOUPF.png
編集:ああ、ここに文字列と、フォントを設定するために使用したコードがあります:
javax.swing.UIManager.put("OptionPane.messageFont", new Font("Urdu Typesetting", Font.PLAIN, 60));
JOptionPane.showMessageDialog(null,"\n\u0645\u0633\u062C\u062F");