java android fonts true-type-fonts libgdx

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 ".

Fuente: http://www.badlogicgames.com/wordpress/?p=2300