2011-06-19 7 views
1

私はアンドロイドが複雑なテキストレンダリング、特に合字とシェイプのためのアラビア語のサポートが不十分であることをサポートしていませんでした。特定のユニコードエスケープコードを使用してアラビア語の文字列を表示することで、整形上の問題を回避することはできますが、diacraticsを正しく表示することはできません。組み込みのcanvas.drawTextを避けて複雑なテキストレンダリング - テキストをビットマップにレンダリングし、代わりにイメージビューに表示する方法はありますか?

テキストはjava.awt.Graphics2Dを使用してグラフィックで適切にレンダリングするが、それはアンドロイドでサポートされていない、そのコードは次のとおりです。

InputStream is = converter.class.getResourceAsStream("ARIAL.TTF"); 
Font font = Font.createFont(Font.TRUETYPE_FONT, is); 
Font medium_font = font.deriveFont(32f); 


BufferedImage sizedBufferedImage = new BufferedImage((rounded_width+10),(rounded_height+14), BufferedImage.TYPE_INT_ARGB); 
Graphics2D g_sized = sizedBufferedImage.createGraphics(); 
g_sized.setColor(Color.black); 
g_sized.setFont(medium_font); 
g_sized.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

g_sized.drawString(word_arabic, 5, 7+max_ascent); 

ByteArrayOutputStream imgoutstr = new ByteArrayOutputStream(); 
ImageIO.write(sizedBufferedImage, "png", imgoutstr); 

私はその後、ImageIOでを使用してビットマップにGraphics2Dオブジェクトを取得することができます最後にImageViewに表示します。文字列がデータベースから来ているため、実行時にこれを行う必要があります。

私の問題は、グラフィクスオブジェクトに単語を書き込む代わりに、最終的に画像ビューとしてアンドロイドに表示するためのドロアブル/ビットマップに入ることができます。私はアンドロイドのテキストをバイパスしようとしていますユニコードを完全にサポートし、必要な複雑なテキストレンダリングを処理できる代​​替テキストレンダラーを使用しています。それをイメージに入れて、それをレンダリングしようとするのではなく、画像として単語をそのまま表示させることができます。

アンドロイドキャンバスの代わりにグラフィックスオブジェクトにテキストを描画する方法はありますか?レンダリングされたグラフィックスオブジェクトをアンドロイドが使用できるビットマップに入れますか? Androids canvas.drawStringは文字列を正しくレンダリングせず、複雑なテキストの場合はGraphics2Dとは異なるテキストをレンダリングします。

答えて

0

Honeycombの複雑なテキストレンダリングシステムが、すぐにAndroid搭載端末に組み込まれることを願っています。複雑なテキストレンダリングを完全にサポートしていないと、Android携帯電話は、アラビア語、南アジア、東南アジアの市場では限定的な成功しか得られません。

世界中の多くの国で使用されている言語に適切な根本的なサポートを持たないモバイル通信デバイス用のオペレーティングシステムをリリースすることは非常に目に見えていました。

関連する問題