我需要将一些从右到左的文本(阿拉伯语,希伯来语)呈现为位图。用此代码似乎可以很好地生成文本,但其大小和翻译错误均不正确:它不适合位图。
下面是创建对象并生成位图的代码:
public TextUIElement(final float letterSize, Game game, int fontResourceId) {
bounds = new Rect();
final Typeface font = game == null ? null : ResourcesCompat.getFont(game.getContext(), fontResourceId);
textPaint = new TextPaint() {
{
setColor(Color.WHITE);
setTextAlign(Align.CENTER);
setTextSize(letterSize);
setAntiAlias(true);
}
};
if (font != null) textPaint.setTypeface(font);
}
public void setText(String text) {
textPaint.getTextBounds(text, 0, text.length(), bounds);
StaticLayout textLayout = new StaticLayout(text, textPaint, bounds.width(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
int maxWidth = -1;
for (int i = 0; i < textLayout.getLineCount(); i++)
maxWidth = Math.max((int)textLayout.getLineWidth(i), maxWidth);
Bitmap bitmap = Bitmap.createBitmap(maxWidth , textLayout.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
canvas.translate(maxWidth / 2.0f, 0.0f);
textLayout.draw(canvas);
...
}
不幸的是,它适用于所有从左到右的语言,但不适用于从右到左的语言。
谢谢。