1 package com.badlogic.gdx.graphics.g2d.freetype; 2 3 import com.badlogic.gdx.assets.AssetDescriptor; 4 import com.badlogic.gdx.assets.AssetLoaderParameters; 5 import com.badlogic.gdx.assets.AssetManager; 6 import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader; 7 import com.badlogic.gdx.assets.loaders.FileHandleResolver; 8 import com.badlogic.gdx.files.FileHandle; 9 import com.badlogic.gdx.graphics.g2d.BitmapFont; 10 import com.badlogic.gdx.graphics.g2d.BitmapFont.BitmapFontData; 11 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData; 12 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter; 13 import com.badlogic.gdx.utils.Array; 14 15 /** 16 * Creates {@link BitmapFont} instances from FreeType font files. Requires a {@link FreeTypeFontLoaderParameter} to be 17 * passed to {@link AssetManager#load(String, Class, AssetLoaderParameters)} which specifies the name of the TTF 18 * file as well the parameters used to generate the BitmapFont (size, characters, etc.) 19 */ 20 public class FreetypeFontLoader extends AsynchronousAssetLoader<BitmapFont, FreetypeFontLoader.FreeTypeFontLoaderParameter>{ FreetypeFontLoader(FileHandleResolver resolver)21 public FreetypeFontLoader (FileHandleResolver resolver) { 22 super(resolver); 23 } 24 25 public static class FreeTypeFontLoaderParameter extends AssetLoaderParameters<BitmapFont>{ 26 /** the name of the TTF file to be used to load the font **/ 27 public String fontFileName; 28 /** the parameters used to generate the font, e.g. size, characters, etc. **/ 29 public FreeTypeFontParameter fontParameters = new FreeTypeFontParameter(); 30 } 31 32 @Override loadAsync(AssetManager manager, String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter)33 public void loadAsync (AssetManager manager, String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter) { 34 if(parameter == null) throw new RuntimeException("FreetypeFontParameter must be set in AssetManager#load to point at a TTF file!"); 35 } 36 37 @Override loadSync(AssetManager manager, String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter)38 public BitmapFont loadSync (AssetManager manager, String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter) { 39 if(parameter == null) throw new RuntimeException("FreetypeFontParameter must be set in AssetManager#load to point at a TTF file!"); 40 FreeTypeFontGenerator generator = manager.get(parameter.fontFileName + ".gen", FreeTypeFontGenerator.class); 41 BitmapFont font = generator.generateFont(parameter.fontParameters); 42 return font; 43 } 44 45 @Override getDependencies(String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter)46 public Array<AssetDescriptor> getDependencies (String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter) { 47 Array<AssetDescriptor> deps = new Array<AssetDescriptor>(); 48 deps.add(new AssetDescriptor<FreeTypeFontGenerator>(parameter.fontFileName + ".gen", FreeTypeFontGenerator.class)); 49 return deps; 50 } 51 } 52