SHARE
TWEET

Untitled

a guest Sep 10th, 2014 179 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.mk1x86.xplore.util;
  2.  
  3. import com.badlogic.gdx.Gdx;
  4. import com.badlogic.gdx.files.FileHandle;
  5. import com.badlogic.gdx.graphics.Pixmap.Format;
  6. import com.badlogic.gdx.graphics.Texture;
  7. import com.badlogic.gdx.graphics.g2d.BitmapFont;
  8. import com.badlogic.gdx.graphics.g2d.PixmapPacker;
  9. import com.badlogic.gdx.graphics.g2d.PixmapPacker.Page;
  10. import com.badlogic.gdx.graphics.g2d.TextureRegion;
  11. import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
  12. import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData;
  13. import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;
  14. import com.badlogic.gdx.graphics.glutils.PixmapTextureData;
  15. import com.badlogic.gdx.utils.Array;
  16. import com.mk1x86.xplore.util.BitmapFontWriter.FontInfo;
  17. import com.mk1x86.xplore.util.BitmapFontWriter.OutputFormat;
  18.  
  19. public class FontCreator {
  20.         public static BitmapFont generateFontWriteFiles(String fontName, FileHandle fontFile, int fontSize, int pageWidth, int pageHeight) {
  21.                 FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
  22.  
  23.                 PixmapPacker packer = new PixmapPacker(pageWidth, pageHeight, Format.RGBA8888, 2, false);
  24.                 FreeTypeFontParameter params = new FreeTypeFontParameter();
  25.                 params.size = fontSize;
  26.                 params.packer = packer;
  27.                 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";
  28.                 FreeTypeBitmapFontData fontData = generator.generateData(params);
  29.                 Array<Page> pages = packer.getPages();
  30.                 TextureRegion[] texRegions = new TextureRegion[pages.size];
  31.                 for (int i = 0; i < pages.size; i++) {
  32.                         Page p = pages.get(i);
  33.                         Texture tex = new Texture(new PixmapTextureData(p.getPixmap(), p.getPixmap().getFormat(), false, false, true)) {
  34.                                 @Override
  35.                                 public void dispose() {
  36.                                         super.dispose();
  37.                                         getTextureData().consumePixmap().dispose();
  38.                                 }
  39.                         };
  40.                         tex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
  41.                         texRegions[i] = new TextureRegion(tex);
  42.                 }
  43.                 BitmapFont font = new BitmapFont(fontData, texRegions, false);
  44.                 font.setUseIntegerPositions(true);
  45.                 saveFontToFile(font, fontSize, fontName, packer);
  46.                 generator.dispose();
  47.                 packer.dispose();
  48.                 return font;
  49.         }
  50.  
  51.         private static boolean saveFontToFile(BitmapFont font, int fontSize, String fontName, PixmapPacker packer) {
  52.                 FileHandle fontFile = getFontFile(fontName + ".fnt"); // .fnt path
  53.                 FileHandle pixmapDir = getFontFile(fontName); // png dir path
  54.                 BitmapFontWriter.setOutputFormat(OutputFormat.Text);
  55.  
  56.                 String[] pageRefs = BitmapFontWriter.writePixmaps(packer.getPages(), pixmapDir, fontName);
  57.  
  58.                 // here we must add the png dir to the page refs
  59.                 for (int i = 0; i < pageRefs.length; i++) {
  60.                         pageRefs[i] = fontName + "/" + pageRefs[i];
  61.                         // Tools.log.debug("\tpageRef: " + pageRefs[i]);
  62.                 }
  63.                 BitmapFontWriter.writeFont(font.getData(), pageRefs, fontFile, new FontInfo(fontName, fontSize), 1, 1);
  64.                 return true;
  65.         }
  66.  
  67.         private static FileHandle getFontFile(String filename) {
  68.                 return Gdx.files.local("generated-fonts/" + filename);
  69.         }
  70. }
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. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top