我正在尝试将阿拉伯文字绘制到位图上以供显示:
Bitmap img = Bitmap.createBitmap( (int) f+100, 300, Config.RGB_565);
Canvas c = new Canvas();
c.setBitmap( img );
mFace = Typeface.createFromAsset(getAssets(),"DejaVuSansCondensed.ttf");
mPaint.setTypeface(mFace);
content = "????";
content = ArabicUtilities.reshape( content );
System.out.println("Drawing text: " + content);
c.drawText(content, 30, 30, mPaint);
Run Code Online (Sandbox Code Playgroud)
ArabicUtilities类是一个重塑unicode文本的工具,因此字母是连接的.请参阅:http://github.com/agawish/Better-Arabic-Reshaper/
但是,生成的位图如下所示:
alt text http://imagebin.ca/img/J1EB8DWc.jpg
它应该看起来像يجري
我相信这个问题是因为,与TextView不同,Bitmap类不支持BiDi,所以它从左边开始绘制字母.
尽我所能,我无法弄清楚如何以正确的顺序绘制文本.