如何在位图中渲染从右到左的文本?

时间:2018-10-25 14:22:58

标签: java android

我需要将一些从右到左的文本(阿拉伯语,希伯来语)呈现为位图。用此代码似乎可以很好地生成文本,但其大小和翻译错误均不正确:它不适合位图。

下面是创建对象并生成位图的代码:

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);
    ...
}

不幸的是,它适用于所有从左到右的语言,但不适用于从右到左的语言。

谢谢。

0 个答案:

没有答案