Tính đến ngay bây giờ, có thực sự không phải là một cách để làm cho quyền văn bản trái, như thể hiện bởi this chủ đề về nó. Vì vậy, cách duy nhất để thực sự làm điều đó là đảo ngược văn bản với StringBuilder
và sau đó hiển thị văn bản đó. Cách hiệu quả hơn để hiển thị văn bản được đảo ngược là tạo phương thức hiển thị văn bản cho phù hợp, vì vậy bạn không phải đảo ngược văn bản mỗi khi bạn cố viết văn bản Phải sang trái. Nếu bạn tạo một phương thức, bạn sẽ có thể triển khai văn bản RTL vào cuộc trò chuyện, tên hoặc đồ họa khác yêu cầu phông chữ RTL.
Tôi cũng khuyên bạn nên chuyển đổi bitmap thành tệp .ttf để dễ sử dụng phông chữ tùy chỉnh của bạn trong khi vẫn giữ được chất lượng tốt. Sau đó, bạn có thể sử dụng FreeTypeFontGenerator
để hiển thị phông chữ của mình một cách độc đáo. Nếu bạn không thể chuyển đổi Bitmap
thành phông chữ, bạn cũng có thể sử dụng phương pháp hiển thị văn bản theo phương thức dưới đây. Một lựa chọn thực sự tốt là thư viện Hiero. Bạn có thể chọn hộp kiểm RTL text.
Dưới đây là một ví dụ về một phương pháp mà bạn có thể tạo ra để làm cho văn bản (bằng cách sử dụng 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();
}
Hãy chắc chắn để thêm tất cả những phụ thuộc vào tập tin build.gradle
của bạn (trong phần phụ thuộc) :
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"
Bạn có thể tùy ý thêm thông số màu (ở định dạng RGBA) vào phương pháp của bạn để có thêm chức năng. Hy vọng nó giúp!
Dường như [LibGDX không hỗ trợ ngôn ngữ RTL] (https://github.com/libgdx/libgdx/issues/787), không phải ra khỏi hộp. – asherbar
Bạn đang sử dụng 'Bitmap' để hiển thị dưới dạng phông chữ như thế nào? Hay bạn đã có tệp .ttf hoặc .otf cho phông chữ? – AkashBhave
nhưng tại sao bạn cho rằng mã của mình là "xây dựng giá rẻ"? có gì sai với nó? chỉ vì bạn xây dựng nó và api không có hỗ trợ cho nó không làm cho nó sai, bạn có thể cung cấp mã của "xây dựng giá rẻ" này? –