libgdx zeichne chinesische Schriftzeichen

9

Ich möchte in meiner Anwendung chinesischen Text drucken.

1. Wenn ich das versuche, wird der Bildschirm leer sein. Es gibt keinen Fehler an der Konsole.

Erstellen Methode:

%Vor%

Render-Methode:

%Vor%

2.Wenn ich das versuche, erscheinen 3 verschiedene chinesische Schriftzeichen auf dem Bildschirm, aber ich habe keine Ahnung, warum diese Zeichen zeichnen. Es gibt keine Verbindung zwischen asd und den drei Zeichen

Erstellen Methode:

%Vor%

Render-Methode:

%Vor%

Kann jemand das chinesische Schriftzeichen in libgdx richtig zeichnen (ich benutze die aktuelle Version von libgdx)? Beispielsweise: Wie geht es dir? - Ni Hao Ma? - 你 好 吗?

Grüße

BEARBEITEN: Hier ist ein vollständiges Beispiel, das erwartete chinesische Schriftzeichen auf dem Bildschirm zeigt. Ich habe die Schrift von hier heruntergeladen: Ссылка

%Vor%     
Michael S 19.03.2014, 22:33
quelle

3 Antworten

2

Gehen Sie zu Ссылка und holen Sie sich BMFont und benutzen Sie es, um sich Ihre Schriftart anzuschauen. Sie können damit auch libgdx-Bitmap-Font-Dateien vorgenerieren. Das Problem ist, dass Ihre Schriftart keine Unicode-Schriftart ist.

Wenn Sie Java-Code eingeben, wird das "好" -Symbol in den Wert U + 597D übersetzt. Die Schriftart-ttf-Datei, die Sie verwenden, ist eine Old-School-Nicht-Unicode-Schriftart. Die Art, wie diese älteren Font-Dateien funktionieren, besteht darin, dass sie einen Buchstaben wie "a" durch ein anderes Bild ersetzen. "a" ist U + 61. Also wird in Ihrem Programm der Buchstabe "a" in U + 61 konvertiert, was einem chinesischen Zeichensymbol entspricht, aber "好" mit einem Wert von U + 597D nicht.

Sie können entweder weiterhin Ihre Schriftart verwenden und die Position jedes Zeichens nachschlagen, so dass Sie die richtige Nummer verwenden können. Verwenden Sie nicht "a" stattdessen etwas wie (char) 0x61, so dass es ein wenig weniger verwirrend ist. Oder ...

Holen Sie sich einfach eine gültige Unicode-Schriftart, die das "好" -Symbol an U + 597D enthält.

    
Chase 19.03.2014, 23:31
quelle
2

Das ist meine Antwort:

%Vor%

Das ist das Ergebnis des Programms. Bildbeschreibung hier eingeben

    
Junxiao Wang 29.09.2017 15:56
quelle
0

Der Freetype Loader in libGDX erstellt tatsächlich ein BitmapFont . Um das zu tun, braucht es eine Liste von Charakteren. Die Standardliste besteht nur aus alphanumerischen Zeichen. Um Unicode zu rendern, müssen Sie diese Liste durch die Unicode-Zeichen, die Sie benötigen, ersetzen / anhängen.

Der folgende Code sollte eine Hilfe sein (ich benutze AssetManager ):

%Vor%

Hinweis : Wenn Sie den Asset Manager verwenden, müssen Sie die Loader wie in ihrem Beispiel festlegen:

%Vor%

Ich habe auch diese Antwort gefunden.

    
Laur Ivan 06.01.2016 16:20
quelle