2016-04-04 21 views
2

Ich mache eine App, um mir zu helfen, mich an einige thailändische Wörter zu erinnern, die ich lerne.Wie richte ich Thai-Schrift korrekt in libGDX?

Allerdings kann ich Text nicht korrekt rendern.

Ich habe this example verwendet, um eine grundlegende Szene zu erstellen. Das habe ich bisher.

public class ThaiWords extends ApplicationAdapter { 

OrthographicCamera cam; 
SpriteBatch batch; 
BitmapFont thaiFont; 

@Override 
public void create() { 

    FreeTypeFontGenerator generator; 

    FreeTypeFontParameter parameter = new FreeTypeFontParameter(); 
    parameter.size = 18; 
    parameter.characters = "ก"; 

    generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/garuda.ttf")); 
    thaiFont = generator.generateFont(parameter); 
    generator.dispose(); 

    batch = new SpriteBatch(); 

    cam = new OrthographicCamera(); 
    cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
    cam.update(); 
} 

@Override 
public void render() { 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    batch.setProjectionMatrix(cam.combined); 
    batch.begin(); 
    thaiFont.draw(batch, "ก", 0, 66); 
    batch.end(); 
} 

@Override 
public void resize (int width, int height) { 
    cam.setToOrtho(false, width, height); 
} 
} 

Zum Testen möchte ich nur das Zeichen "ก" anzeigen. Der obige Code erzeugt ein "?" Symbol.

Ich habe die Schriftart garuda.tff direkt aus der libGDX directory heruntergeladen.

Ich bin mir wirklich nicht sicher, was ich vermisse! Ich habe sogar versucht, vor der Laufzeit eine Bitmap zu erzeugen, aber das erzeugte einen leeren Bildschirm.

Jeder Rat wäre großartig!

bearbeiten: Ich habe festgestellt, in Android Studio, wenn ich schließe und öffne das Projekt den tatsächlichen Code ändert sich von "ก" zu "?". Es könnte ein Codierproblem sein, aber ich habe keine Ahnung, wie ich es beheben kann.

+0

Sind Sie sicher Garuda hat Thai-Zeichen? – Tenfour04

+0

Ich bin mir sicher, dass es so ist. Es wurde speziell entwickelt, um leicht lesbare thailändische Schriftzeichen zu haben. Ich habe es auch zu meinen Schriftarten in Windows hinzugefügt und die Zeichen eingegeben. Weitere Informationen finden Sie hier http://slice-of-thai.com/fonts/#garuda – Johnny

Antwort

2

Ich würde vorschlagen, dass Sie Bühne und Beschriftung verwenden, um Text zu rendern.
in erstellen:

Stage stage = new Stage(); 
Label label = new Label("วรณ", new Label.LabelStyle(thaiFont, Color.YELLOW)); 
label.setPosition(200,10); 
stage.addActor(label); 

und dann Methode machen:

stage.act(delta); 
stage.draw(); 

ich es getestet und es funktionierte gut.

enter image description here

+0

Vielen Dank für Ihre Antwort. Hm ich bekomme immer noch "?" auf meinem System. Verwenden Sie Android Studio? Könnten Sie Ihre Kodierungseinstellungen unter Einstellungen -> Editor -> Dateikodierungen teilen? – Johnny

+0

Aktualisierte Antwort. Ich benutze IntelliJ IDEA Community Edition 15.0.3. Mein Betriebssystem ist Windows 10 und die Systemsprache ist Russisch. – Enigo

+0

Vielen Dank für Ihre Hilfe. Ich änderte die Codierung von Windows-1251 zu UTF-8 für meine Hauptklasse sowie die.ttf-Datei und jetzt beide Methoden des Renderings arbeiten. – Johnny

1

hatte ich das gleiche Problem. Dies ist nicht falsch mit Ihrem Code oder libGdx Font Generator. Font generator und libgdx Freetype Erweiterung funktioniert gut mit UTF-8 Zeichensatz einschließlich Sonderzeichen. Sie müssen nur Ihre Eigenschaftendateien in UTF-8-Codierung speichern.

Sie können einen beliebigen Texteditor verwenden, um eine Eigenschaftendatei in UTF-8-Kodierung zu speichern. Wenn Sie Android Studio verwenden, gehen Sie zu Datei-> Einstellungen-> Editor-> Dateikodierung. Ändern Sie dann "Standardcodierung für Eigenschaftendateien" in UTF-8.

Dann müssen Sie alle Sonderzeichen für jede Eigenschaftendatei erneut eingeben. weil die vorherige Kodierung die unbekannten Zeichen durcheinander gebracht hat.

Als alles sollte gut funktionieren!

enter image description here