Estoy usando algunas fuentes chinas y parece que las fuentes de mapa de bits generadas por FreeTypeFontGenerator
tendrán caracteres faltantes con ciertas configuraciones FreeTypeFontParameter
. A continuación, mostraré algunos ejemplos.
IMG01 [test_font.ttf, tamaño de fuente 16, ancho del borde 2] Se ve bien.
IMG02 [test_font.ttf, tamaño de fuente 24, ancho del borde 3] Faltan caracteres.
IMG03 [microsoft_yahei_bold.ttf, tamaño de fuente 24, ancho de borde 3] Se cambió a una fuente de Microsoft más prometedora y la situación parece empeorar.
Códigos básicos para IMG02:
public class GameContext extends ApplicationAdapter {
private BitmapFont font;
private SpriteBatch batch;
<strong i="23">@Override</strong>
public void create() {
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("test_font.ttf"));
String characters = Gdx.files.internal("characters.txt").readString("UTF8");
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 24;
parameter.color = Color.WHITE;
parameter.borderColor = Color.BLACK;
parameter.borderWidth = 3;
parameter.characters = FreeTypeFontGenerator.DEFAULT_CHARS + characters;
font = generator.generateFont(parameter);
batch = new SpriteBatch();
}
<strong i="24">@Override</strong>
public void render() {
Gdx.gl.glClearColor(0.9f, 0.9f, 0.9f, 1.0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
font.draw(batch, "This is a test string zzz...", 10, Gdx.graphics.getHeight() / 2);
batch.end();
}
<strong i="25">@Override</strong>
public void dispose() {
font.dispose();
}
}
Nota: El archivo characters.txt
incluye algunos caracteres chinos y signos de puntuación que necesito usar en mi juego.
Puede encontrar el proyecto de ejemplo aquí .
1.9.3
Solo probado en Android y Windows.
Agregue la siguiente línea para verificar si eso hace alguna diferencia:
FreeTypeFontGenerator.setMaxTextureSize(2048);
Agregue la siguiente línea para verificar si eso hace alguna diferencia:
FreeTypeFontGenerator.setMaxTextureSize(2048);
¡Realmente funciona! ¡Muchas gracias!
Duplicado de # 3525
Comentario más útil
Agregue la siguiente línea para verificar si eso hace alguna diferencia: