@Override public void create () { FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("data/unbom.ttf")); FreeTypeFontParameter parameter = new FreeTypeFontParameter(); parameter.size = 18; parameter.characters = "한국어/조선�?"; koreanFont = generator.generateFont(parameter); generator.dispose(); parameter.characters = FreeTypeFontGenerator.DEFAULT_CHARS; generator = new FreeTypeFontGenerator(Gdx.files.internal("data/russkij.ttf")); cyrillicFont = generator.generateFont(parameter); generator.dispose(); parameter.characters = "วรณยุ�?ต์"; generator = new FreeTypeFontGenerator(Gdx.files.internal("data/garuda.ttf")); thaiFont = generator.generateFont(parameter); generator.dispose(); batch = new SpriteBatch(); cam = new OrthographicCamera(); cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); cam.update(); }
@Override public void create () { boolean flip = false; batch = new SpriteBatch(); if (flip) { OrthographicCamera cam = new OrthographicCamera(); cam.setToOrtho(flip); cam.update(); batch.setProjectionMatrix(cam.combined); } font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), flip); FileHandle fontFile = Gdx.files.internal("data/arial.ttf"); FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile); FreeTypeFontParameter parameter = new FreeTypeFontParameter(); parameter.size = 15; parameter.flip = flip; parameter.genMipMaps = true; // parameter.shadowOffsetX = 1; // parameter.shadowOffsetY = 1; // parameter.shadowColor = Color.GREEN; // parameter.borderWidth = 1f; // parameter.borderColor = Color.PURPLE; FreeTypeBitmapFontData fontData = generator.generateData(parameter); ftFont = generator.generateFont(parameter); generator.dispose(); }
/** Creates a new generator from the given font file. Uses {@link FileHandle#length()} to determine the file size. If the file * length could not be determined (it was 0), an extra copy of the font bytes is performed. Throws a * {@link GdxRuntimeException} if loading did not succeed. */ public FreeTypeFontGenerator (FileHandle fontFile, int faceIndex) { name = fontFile.nameWithoutExtension(); library = FreeType.initFreeType(); face = library.newFace(fontFile, faceIndex); if (checkForBitmapFont()) return; setPixelSizes(0, 15); }
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile); BitmapFont font15 = generator.generateData(15); BitmapFont font22 = generator.generateData(22); generator.dispose();
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile); BitmapFont font15 = generator.generateFont(15); BitmapFont font22 = generator.generateFont(22); generator.dispose();
@Override public BitmapFont loadSync (AssetManager manager, String fileName, FileHandle file, FreeTypeFontLoaderParameter parameter) { if(parameter == null) throw new RuntimeException("FreetypeFontParameter must be set in AssetManager#load to point at a TTF file!"); FreeTypeFontGenerator generator = manager.get(parameter.fontFileName + ".gen", FreeTypeFontGenerator.class); BitmapFont font = generator.generateFont(parameter.fontParameters); return font; }
param.packer = new PixmapPacker(1024, 1024, Pixmap.Format.RGBA8888, 2, false, new PixmapPacker.SkylineStrategy()); FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("data/unbom.ttf")); generatedFont = generator.generateFont(param);
FreeTypeFontGenerator.setMaxTextureSize(1024); FreeTypeFontGenerator fontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("VisOpenSansKerned.ttf")); FreeTypeFontGenerator.FreeTypeFontParameter paramsDefault = new FreeTypeFontGenerator.FreeTypeFontParameter(); paramsDefault.color = new Color(0xffffffe8); paramsBig.minFilter = Texture.TextureFilter.Linear; BitmapFont fontDefault = fontGenerator.generateFont(paramsDefault); BitmapFont fontSmall = fontGenerator.generateFont(paramsSmall); BitmapFont fontBig = fontGenerator.generateFont(paramsBig); fontGenerator.dispose(); fontGenerator = null; FreeTypeFontGenerator cjkFontGenerator = new FreeTypeFontGenerator(cjkFontModule.getFontFile());
public void create () { batch = new SpriteBatch(); shapes = new ShapeRenderer(); shapes.setColor(Color.RED); FreeTypeFontGenerator.setMaxTextureSize(128); generator = new FreeTypeFontGenerator(Gdx.files.internal("data/arial.ttf")); FreeTypeFontParameter param = new FreeTypeFontParameter(); param.incremental = true; param.size = 24; param.characters = "howdY\u0000"; FreeTypeBitmapFontData data = new FreeTypeBitmapFontData() { public int getWrapIndex (Array<Glyph> glyphs, int start) { return SimplifiedChinese.getWrapIndex(glyphs, start); } }; // By default latin chars are used for x and cap height, causing some fonts to display non-latin chars out of bounds. data.xChars = new char[] {'动'}; data.capChars = new char[] {'动'}; font = generator.generateFont(param, data); }
FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal(style.path)); fontParameter.packer = packer; fontParameter.characters = CHARACTERS; BitmapFontData data = gen.generateData(fontParameter); gen.dispose();
int charactersLength = characters.length; boolean incremental = parameter.incremental; int flags = getLoadingFlags(parameter); setPixelSizes(0, parameter.size); if (loadChar(c, flags)) { int lh = FreeType.toInt(face.getGlyph().getMetrics().getHeight()); data.lineHeight = (lh > data.lineHeight) ? lh : data.lineHeight; if (loadChar(' ', flags) || loadChar('l', flags)) { data.spaceXadvance = FreeType.toInt(face.getGlyph().getMetrics().getHoriAdvance()); } else { if (!loadChar(xChar, flags)) continue; data.xHeight = FreeType.toInt(face.getGlyph().getMetrics().getHeight()); break; if (!loadChar(capChar, flags)) continue; data.capHeight = FreeType.toInt(face.getGlyph().getMetrics().getHeight()) + Math.abs(parameter.shadowOffsetY); break; int height = loadChar(c, flags) ? FreeType.toInt(face.getGlyph().getMetrics().getHeight()) : 0; heights[i] = height; Glyph missingGlyph = createGlyph('\0', data, parameter, stroker, baseLine, packer); if (missingGlyph != null && missingGlyph.width != 0 && missingGlyph.height != 0) { data.setGlyph('\0', missingGlyph);
/** Generates a new {@link BitmapFontData} instance, expert usage only. Throws a GdxRuntimeException if something went wrong. * @param size the size in pixels */ public FreeTypeBitmapFontData generateData (int size) { FreeTypeFontParameter parameter = new FreeTypeFontParameter(); parameter.size = size; return generateData(parameter); }
BitmapFont font; SpriteBatch spriteBatch; //... Load any font of your choice first FreeTypeFontGenerator fontGenerator = new FreeTypeFontGenerator( Gdx.files.internal("myFont.ttf") ); FreeTypeFontGenerator.FreeTypeFontParameter freeTypeFontParameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); freeTypeFontParameter.size = size; fontGenerator.generateData(freeTypeFontParameter); font = fontGenerator.generateFont(freeTypeFontParameter); //Initialize the spriteBatch as requirement GlyphLayout glyphLayout = new GlyphLayout(); String item = "Example"; glyphLayout.setText(font,item); float w = glyphLayout.width; font.draw(spriteBatch, glyphLayout, (Game.SCREEN_WIDTH - w)/2, y);
/** Releases all resources used by this UnicodeFont. This method should be called when this UnicodeFont instance is no longer * needed. */ public void dispose () { for (Iterator iter = glyphPages.iterator(); iter.hasNext();) { GlyphPage page = (GlyphPage)iter.next(); page.getTexture().dispose(); } if (bitmapFont != null) { bitmapFont.dispose(); generator.dispose(); } }
@Override public FreeTypeFontGenerator load (AssetManager assetManager, String fileName, FileHandle file, FreeTypeFontGeneratorParameters parameter) { FreeTypeFontGenerator generator = null; if (file.extension().equals("gen")) { generator = new FreeTypeFontGenerator(file.sibling(file.nameWithoutExtension())); } else { generator = new FreeTypeFontGenerator(file); } return generator; }
@Override public Glyph getGlyph (char ch) { Glyph glyph = super.getGlyph(ch); if (glyph == null && generator != null) { generator.setPixelSizes(0, parameter.size); float baseline = ((flipped ? -ascent : ascent) + capHeight) / scaleY; glyph = generator.createGlyph(ch, this, parameter, stroker, baseline, packer); if (glyph == null) return missingGlyph; setGlyphRegion(glyph, regions.get(glyph.page)); setGlyph(ch, glyph); glyphs.add(glyph); dirty = true; Face face = generator.face; if (parameter.kerning) { int glyphIndex = face.getCharIndex(ch); for (int i = 0, n = glyphs.size; i < n; i++) { Glyph other = glyphs.get(i); int otherIndex = face.getCharIndex(other.id); int kerning = face.getKerning(glyphIndex, otherIndex, 0); if (kerning != 0) glyph.setKerning(other.id, FreeType.toInt(kerning)); kerning = face.getKerning(otherIndex, glyphIndex, 0); if (kerning != 0) other.setKerning(ch, FreeType.toInt(kerning)); } } } return glyph; }
setPixelSizes(0, size); if (!loadChar(c)) { throw new GdxRuntimeException("Unable to load character!");
if (missing) return null; if (!loadChar(c, getLoadingFlags(parameter))) return null;
private boolean loadChar (int c) { return loadChar(c, FreeType.FT_LOAD_DEFAULT | FreeType.FT_LOAD_FORCE_AUTOHINT); }
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/myfont.ttf")); FreeTypeFontParameter parameter = new FreeTypeFontParameter(); parameter.size = 12; BitmapFont font12 = generator.generateFont(parameter); // font size 12 pixels generator.dispose(); // don't forget to dispose to avoid memory leaks!