截至目前,确实没有办法呈现从右到左的文本,如this 线程所示。所以真正做到这一点的唯一方法是用StringBuilder 反转文本,然后显示它。呈现反转文本的更有效方法是创建一个将相应地显示文本的方法,因此您不必每次尝试从右到左编写文本时都反转它。如果您创建一个方法,您将能够将 RTL 文本实现为聊天、名称或其他需要 RTL 字体的图形。
我还建议将您的位图转换为 .ttf 文件,以便在保持良好质量的同时轻松使用您的自定义字体。然后您可以使用FreeTypeFontGenerator 很好地呈现您的字体。如果您无法将Bitmap 转换为字体,您也可以使用以下方法显示文本。一个非常好的替代方案是Hiero 库。您可以选中 RTL 文本复选框。
以下是您可以创建来呈现文本的方法示例(使用FreeTypeFontGenerator):
// Keep the generator here so that it is not created each time
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fontFile.ttf"));
public void renderRTL(float x, float y, int fontSize, String text) {
batch.begin(); // Lets you draw on the screen
// Reverses the text given
StringBuilder builder = new StringBuilder();
builder.append(text);
builder.reverse();
String outputText = builder.toString();
// Creates the font
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = fontSize;
parameter.characters = "ALL HEBREW CHARACTERS"; // Put all your Hebrew characters in this String
scoreFont = generator.generateFont(parameter);
scoreFont.setColor(Color.BLACK);
scoreFont.draw(batch, outputText, x, y); // Actually draws the text
generator.dispose(); // Clears memory
batch.end();
}
确保将所有这些依赖项添加到您的 build.gradle 文件中(在依赖项部分):
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
您可以选择在方法中添加颜色参数(RGBA 格式)以获得更多功能。希望对您有所帮助!