SHARE
TWEET
Untitled
a guest
Sep 10th, 2014
179
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- package com.mk1x86.xplore.util;
- import com.badlogic.gdx.Gdx;
- import com.badlogic.gdx.files.FileHandle;
- import com.badlogic.gdx.graphics.Pixmap.Format;
- import com.badlogic.gdx.graphics.Texture;
- import com.badlogic.gdx.graphics.g2d.BitmapFont;
- import com.badlogic.gdx.graphics.g2d.PixmapPacker;
- import com.badlogic.gdx.graphics.g2d.PixmapPacker.Page;
- import com.badlogic.gdx.graphics.g2d.TextureRegion;
- import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
- import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData;
- import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;
- import com.badlogic.gdx.graphics.glutils.PixmapTextureData;
- import com.badlogic.gdx.utils.Array;
- import com.mk1x86.xplore.util.BitmapFontWriter.FontInfo;
- import com.mk1x86.xplore.util.BitmapFontWriter.OutputFormat;
- public class FontCreator {
- public static BitmapFont generateFontWriteFiles(String fontName, FileHandle fontFile, int fontSize, int pageWidth, int pageHeight) {
- FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
- PixmapPacker packer = new PixmapPacker(pageWidth, pageHeight, Format.RGBA8888, 2, false);
- FreeTypeFontParameter params = new FreeTypeFontParameter();
- params.size = fontSize;
- params.packer = packer;
- params.characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890\"!`?'.,;:()[]{}<>|/@\\^$-%+=#_&~*\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\u2327";
- FreeTypeBitmapFontData fontData = generator.generateData(params);
- Array<Page> pages = packer.getPages();
- TextureRegion[] texRegions = new TextureRegion[pages.size];
- for (int i = 0; i < pages.size; i++) {
- Page p = pages.get(i);
- Texture tex = new Texture(new PixmapTextureData(p.getPixmap(), p.getPixmap().getFormat(), false, false, true)) {
- @Override
- public void dispose() {
- super.dispose();
- getTextureData().consumePixmap().dispose();
- }
- };
- tex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
- texRegions[i] = new TextureRegion(tex);
- }
- BitmapFont font = new BitmapFont(fontData, texRegions, false);
- font.setUseIntegerPositions(true);
- saveFontToFile(font, fontSize, fontName, packer);
- generator.dispose();
- packer.dispose();
- return font;
- }
- private static boolean saveFontToFile(BitmapFont font, int fontSize, String fontName, PixmapPacker packer) {
- FileHandle fontFile = getFontFile(fontName + ".fnt"); // .fnt path
- FileHandle pixmapDir = getFontFile(fontName); // png dir path
- BitmapFontWriter.setOutputFormat(OutputFormat.Text);
- String[] pageRefs = BitmapFontWriter.writePixmaps(packer.getPages(), pixmapDir, fontName);
- // here we must add the png dir to the page refs
- for (int i = 0; i < pageRefs.length; i++) {
- pageRefs[i] = fontName + "/" + pageRefs[i];
- // Tools.log.debug("\tpageRef: " + pageRefs[i]);
- }
- BitmapFontWriter.writeFont(font.getData(), pageRefs, fontFile, new FontInfo(fontName, fontSize), 1, 1);
- return true;
- }
- private static FileHandle getFontFile(String filename) {
- return Gdx.files.local("generated-fonts/" + filename);
- }
- }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
