Я пытаюсь нарисовать арабский текст на растровое изображение для отображения:
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);
Класс ArabicUtilities - это инструмент для изменения текста Юникода, чтобы буквы были связаны. см .: http://github.com/agawish/Better-Arabic-Reshaper/
Однако генерируемое растровое изображение выглядит следующим образом:
альтернативный текст http://imagebin.ca/img/J1EB8DWc.jpg
Когда это должно выглядеть как يجري
Я считаю, что проблема в том, что, в отличие от TextView , класс Bitmap не поддерживает BiDi, поэтому он рисует буквы слева для записи.
Как ни старайся, я не могу понять, как нарисовать текст в правильном порядке.