libgdx画中文字符

Mic*_*l S 9 java fonts android libgdx chinese-locale

我喜欢在我的应用程序中打印中文文本.

1.当我尝试这个时,屏幕将是空的.控制台没有错误.

创建方法:

FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("fonts/DFLS1B.TTF"));
font = gen.generateFont(40, "?", false);
Run Code Online (Sandbox Code Playgroud)

渲染方法:

spriteBatch.setColor(1, 1, 1, 1);
spriteBatch.begin();
font.draw(spriteBatch, "?", 10, 100);
spriteBatch.end();
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,屏幕上会出现3个不同的汉字,但我不知道为什么这些字符在哪里画.asd和三个字符之间没有连接

创建方法:

FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("fonts/DFLS1B.TTF"));
font = gen.generateFont(40);
Run Code Online (Sandbox Code Playgroud)

渲染方法:

spriteBatch.setColor(1, 1, 1, 1);
spriteBatch.begin();
font.draw(spriteBatch, "asd", 10, 100);
spriteBatch.end();
Run Code Online (Sandbox Code Playgroud)

有谁知道如何在libgdx中正确绘制中文字符(我使用当前版本的libgdx)?例如:你好吗?- 你好吗? - 你好吗?

问候


编辑:这是一个完整的例子,它将在屏幕上显示预期的中文字符.我从这里下载了字体:http: //www.study-area.org/apt/firefly-font/

package com.mytest;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.scenes.scene2d.Stage;

public class ChineseFontTest implements ApplicationListener {

private Stage stage;
private SpriteBatch spriteBatch;
public BitmapFont font;

@Override
public void create() {
    stage = new Stage(800, 800);
    spriteBatch = new SpriteBatch();

    FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("fonts/fireflysung.ttf"));
    font = gen.generateFont(40, "???", false);

}

@Override
public void dispose() {
    stage.dispose();
}

@Override
public void render() {      
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    spriteBatch.setColor(1, 1, 1, 1);
    spriteBatch.begin();
    font.draw(spriteBatch, "???", 10, 100);
    spriteBatch.end();
}

@Override
public void resize(int width, int height) {
}

@Override
public void pause() {
}

@Override
public void resume() {
}
    }
Run Code Online (Sandbox Code Playgroud)

Cha*_*ase 2

访问http://www.angelcode.com/products/bmfont/并获取 BMFont 并用它来查看您的字体。您还可以用它预先生成 libgdx 位图字体文件。问题是你的字体不是 unicode 字体。

\n\n

当您键入 Java 代码时,“\xe5\xa5\xbd”符号将转换为值 U+597D。您使用的字体 ttf 文件是老式的非 unicode 字体。这些旧字体文件的工作方式是用不同的图片替换“a”等字母。“a”是U+61。因此,在您的程序中,字母“a”被转换为 U+61,它映射到汉字符号,但值为 U+597D 的“\xe5\xa5\xbd”则不会。

\n\n

您可以继续使用您的字体并查找每个字符的位置,以便可以使用正确的数字。不要使用“a”,而是使用类似 (char)0x61 的内容,这样就不会那么混乱了。或者...

\n\n

只需获取 U+597D 处包含“\xe5\xa5\xbd”符号的有效 unicode 字体即可。

\n