Well, this is a question for 8 months, but maybe your question is still interested. Or at least someone with the same problem will be.
To have smooth fonts, I use free font fonts and create them on the download screen. To do this, you need an asset manager.
Usually I create my asset manager in my main activity:
public class MyGdxGame extends Game implements ApplicationListener { public SpriteBatch batch; public AssetManager assets; @Override public void create () { batch = new SpriteBatch(); assets = new AssetManager(); this.setScreen(new LoadingScreen(this)); } @Override public void render () { super.render(); } }
And on the loading screen, I create fonts of any size based on the .ttf file:
public class LoadingScreen implements Screen{ final MyGdxGame game; public LoadingScreen(final MyGdxGame gam){ game = gam; FileHandleResolver resolver = new InternalFileHandleResolver(); game.assets.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver)); game.assets.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver)); FreeTypeFontLoaderParameter size1Params = new FreeTypeFontLoaderParameter(); size1Params.fontFileName = "Fonts/calibri.ttf"; size1Params.fontParameters.genMipMaps = true; size1Params.fontParameters.minFilter = TextureFilter.Linear; size1Params.fontParameters.magFilter = TextureFilter.Linear; size1Params.fontParameters.size = Gdx.graphics.getWidth()/18; game.assets.load("font1.ttf", BitmapFont.class, size1Params); FreeTypeFontLoaderParameter size2Params = new FreeTypeFontLoaderParameter(); size2Params.fontFileName = "Fonts/calibri.ttf"; size2Params.fontParameters.genMipMaps = true; size2Params.fontParameters.minFilter = TextureFilter.Linear; size2Params.fontParameters.magFilter = TextureFilter.Linear; size2Params.fontParameters.size = Gdx.graphics.getWidth()/6; game.assets.load("font2.ttf", BitmapFont.class, size2Params); } }
Using this method, you can create a very smooth font of any size. The trick to make them smooth is the following three lines:
size2Params.fontParameters.genMipMaps = true; size2Params.fontParameters.minFilter = TextureFilter.Linear; size2Params.fontParameters.magFilter = TextureFilter.Linear;
Finally, when you need to use one of your fonts, you need to use:
game.assets.get("font1.ttf", BitmapFont.class)
Be careful with the name of your fonts. For the 2 fonts I created in this example, font1 and font2 , I used a single .ttf file, which is calibri.ttf , but when I call the created fonts in my code, I need to call font1.ttf or font2.ttf , even if my asset does not have such .ttf files.