2

ベンガル語で LWUIT を使用して単純な J2ME アプリケーションを開発しようとしています。ただし、ベンガル語では母音が結合文字として頻繁に使用されるため、LWUIT でいくつかの問題に直面しています。

たとえば、「X」は子音文字で、「@」はベンガル語の母音として機能するとします。現在、これらは必要に応じて結合され、結合形式「X@」になります。LWUIT を使用して、このような母音を追加し、実際のアプリケーションで子音との結合形式として表示しようとすると、文字セットで定義されているように、前の文字 (連続した順序) と結合されます。興味深いことに、LWUIT デザイナーの表示/プレビューでは、文字が正しく表示されます。

詳細については、こちらのドキュメント ( http://dibbaa.com/lwuit/doc/lwuit.doc ) をダウンロードして、実際の例を参照してください。

誰かがこれについて私を助けてくれれば幸いです。文字セットで定義された文字を描画中に連続した順序で結合しないように、LWUIT フレームワークを設定する方法を教えてください。アプリケーションには LWUIT バージョン 1.3 とフォント「KarnaphuliP.ttf」を使用しました。

ありがとう

4

2 に答える 2

2

私はバンガリ語について何も知りません。あなたが言及したフォントが見つかりません。しかし、問題を再現するための代替フォント「Bengali-Progoty.TTF」を取得することができました (残念ながら、これはあなたのものとは少し似ていません)。ここでフォントを取得できます: Bengali-Progoty.TTF

それらの母音は幅がゼロであるという点で特別であり、それらの原点は左上ではなく右上の点にあるに違いありません。このようにして、母音をその前にある他の文字の上に描くことができます。

lwuit デザイナーがビットマップ フォントを生成するとき、すべての文字 (つまり、Unicode 文字) を大きなビットマップに描画し、現在の文字の幅を計算し、その幅を現在のオフセットに追加して、次の文字を描画します。母音の幅は 0 であるため、母音以外の最後の文字に結合されます。

この問題を解決するには、Unicode フォントに切り替えるか (Bangali には Unicode の場所があります)、現在のフォントに固執してフォント生成プロセスをカスタマイズすることができます。

1EditorFont lwuit の editor.jar のクラスをオーバーライドする独自のクラスを作成します。
2メソッドをオーバーライドEditorFont#getBitmapFont()して、すべてのキャラクターを独自に描画します。文字が母音であるかどうかをテストできます。母音の場合は、前にスペースを付けて描画します。
3FontTask lwuit の editor.jar で提供される Ant タスクをオーバーライドします。
4メソッドをオーバーライドしFontTask#addToResources()、元のインスタンスの代わりに独自の EditorFont インスタンスを挿入します。
5 LWUITTask クラスをオーバーライドし、オーバーライドされた FontTaskAddXXXをサポートするメソッドを追加します。
6 ant を使用してリソースを構築し、元のバージョンの代わりに独自のバージョンの LWUITTask と FontTask を使用します。
7母音は通常の文字になったため、他の文字と同じスペースを占有し、他の文字の上に描画できなくなりました。他のキャラクターの上に手動で描画する必要があります。com.sun.lwuit.CustomFontこれらの母音を正しく描画するには、クラスをオーバーライドする必要がある場合があります。

導入された複雑さを考えると、Unicode フォントに切り替えることを強くお勧めします。しかし、私が言ったように、私はバンガリ語について何も知らないし、Unicode フォントを使用するのが適切かどうかもわかりません. 結局のところ、あなたはそれを難し​​い方法でやらなければならないのかもしれません。

幸運を。

于 2010-04-30T12:56:23.673 に答える
0

独自の仮想キーボードを実装する方がよいと思います。LWUIT 開発者ガイドとデモにサンプルがあります。時間を投資すれば、後で役に立つと確信しています。

于 2011-10-15T00:12:08.897 に答える