java - Fuentes TrueType en libGDX
android fonts (4)
Esto funciona en un teléfono clónico S4: Pinewood es una fuente descargada, en la carpeta de activos. Vea la estructura de carpetas a continuación.
import android.util.Log;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
public class Game implements ApplicationListener {
private SpriteBatch mSpriteBatch;
private Texture textureBackground;
private BitmapFont mBitmapFont;
public void create() {
Gdx.graphics.setContinuousRendering(false);
Gdx.graphics.requestRendering();
mSpriteBatch = new SpriteBatch();
Texture.setEnforcePotImages(false);
textureBackground = new Texture(Gdx.files.internal("background.jpg"));
FileHandle fontFile = Gdx.files.internal("Pinewood.ttf");
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
mBitmapFont = generator.generateFont(150);
generator.dispose();
mBitmapFont.setColor(0.9f, 0.5f, 0.5f, 1);
Log.e("Game", "mBitmapFont.getScaleX() : "+mBitmapFont.getScaleX() + ", mBitmapFont.getScaleY() "+mBitmapFont.getScaleY());
}
public void render() {
Log.e("Game", "render()");
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); // This cryptic line clears the screen.
mSpriteBatch.begin();
// Drawing goes here!
mSpriteBatch.draw(textureBackground, 0, 0);
mBitmapFont.draw(mSpriteBatch, "FPS:"+Gdx.graphics.getFramesPerSecond(), 110, 260);
mSpriteBatch.end();
}
public void resize(int width, int height) {
}
public void pause() {
}
public void resume() {
}
public void dispose() {
}
}
¿Alguien sabe cómo puedo usar una fuente TTF en libGDX? He mirado alrededor y he visto cosas sobre StbTrueTypeFont, pero no parece estar en la última versión.
EDITAR: Encontré las cosas de la fuente StbTrueType, el archivo jar se encuentra en el directorio de extensiones. Lo he agregado a mi proyecto. Ahora solo necesito descubrir cómo usarlo. ¿Algún ejemplo?
Investigó mucho y encontró este método de trabajo:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("myfont.ttf"));
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 12; // font size
BitmapFont font12 = generator.generateFont(parameter);
generator.dispose(); // avoid memory leaks, important
Úselo si falló las respuestas anteriores, libGDX Freetype Wiki como referencia.
Sí, definitivamente deberá agregar los gdx-stb-truetype
a su proyecto como lo indicó en su edición. Así es como lo usarás, bastante directo ...
Primero necesita declarar su BitmapFont
y los caracteres que usará ...
BitmapFont font;
public static final String FONT_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789][_!$%#@|///?-+=()*&.;,{}/"´`''<>";
Entonces necesitas crear la fuente ...
font = TrueTypeFontFactory.createBitmapFont(Gdx.files.internal("font.ttf"), FONT_CHARACTERS, 12.5f, 7.5f, 1.0f, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
font.setColor(1f, 0f, 0f, 1f);
Puede jugar con los argumentos que pase para createBitmapFont()
y verá lo que hacen.
Luego, para renderizar la fuente, lo haría como lo hace normalmente ...
batch.begin();
font.draw(font, "This is some text", 10, 10);
batch.end();
Use la extensión gdx-freetype:
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
BitmapFont font15 = generator.generateData(15);
BitmapFont font22 = generator.generateData(22);
generator.dispose();
"Para usar gdx-freetype, agarre los últimos nightlies, enlace gdx-freetype.jar
y gdx-freetype-natives.jar
a su proyecto de escritorio, vincule gdx-freetype.jar
a su proyecto Android, y copie el armeabi/libgdx-freetype.so
armeabi-v7a/libgdx-freetype.so
y armeabi-v7a/libgdx-freetype.so
archivos a la libs/
folder de su proyecto Android, al igual que con los archivos libgdx.so
".