参考になるページがあまりなく四苦八苦でしたが(汗
基本的には、CREATE BITMAPSFONTS ON THE FLY WITH GDX-FREETYPE
で紹介されている方法と一緒です。
サンプルに実行結果 |
独自のフォントを使う場合は、プロジェクトに別途 jarファイルの追加が必要です。
・coreプロジェクト
libgdx-0.x.x/extensions/gdx-freetype/gdx-freetype.jar
を、libsディレクトリーへコピーしビルドパスを通す。
libgdx-0.x.x/extensions/gdx-freetype/gdx-freetype-natives.jar
を、libsディレクトリーへコピーしビルドパスを通す。
・androidプロジェクト
libgdx-0.x.x/extensions/gdx-freetype/gdx-freetype.jar
libgdx-0.x.x/extensions/gdx-freetype/armeabi/libgdx-freetype.so
libgdx-0.x.x/extensions/gdx-freetype/armeabi-v7a/libgdx-freetype.so
を、libsディレクトリーへコピー
アプリで使いたいフォントファイル(.ttf)を assetsディレクトリにコピーして使いたいところでしたが、assetsディレクトリーはサイズ上限があり、日本語フォントファイルをzip圧縮してassetsディレクトリー
に配置しました。。。が。。。それでも、端末によってはうまく読み込めないので今回は、 classpath の通ったディレクトリにzipファイルを配置しました。
libGDXでzipファイルを扱うためのクラスがなさげだったので、以下のようなzipファイルを読み込むためのクラスを用意しました。
ZipFileHandle.java
package com.me.mygdxgame; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import com.badlogic.gdx.Files.FileType; import com.badlogic.gdx.files.FileHandle; public class ZipFileHandle extends FileHandle { private ZipInputStream zis; private ZipEntry nextEntry; public ZipFileHandle(String zipFileName, String entryFileName, FileType type) { super(zipFileName, type); zis = new ZipInputStream(super.read()); try { while (null != (nextEntry = zis.getNextEntry())) { if (nextEntry.getName().equals(entryFileName)) { break; } } } catch (IOException e) { throw new RuntimeException(e); } } @Override public InputStream read() { return zis; } @Override public long length() { if (nextEntry == null) { return 0; } return nextEntry.getSize(); } }
FileHandleクラスを継承しているので、以下のようにして FreeTypeFontGenerator で使うことができました。以下のようにFreeTypeFontGeneratorで生成したいBitmapFont を生成することができます。
例)FreeTypeFontGeneratorクラスの使用例
// BitmapFont生成 FreeTypeFontGenerator generator = new FreeTypeFontGenerator( new ZipFileHandle("font/yasashisa.zip", "yasashisa.ttf", FileType.Classpath)); bitmapFont = generator.generateFont(18, "あいうえお", false); generator.dispose();
FreeTypeFontGenerator#generateFontの第2引数は、文字がユニークになるように設定しないと実行時に例外が発生します。
以下のように、BitmapFont#draw で文字列を描画できます。
例)文字列の描画
@Override public void render() { Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); // 描画 batch.setProjectionMatrix(camera.combined); batch.enableBlending(); batch.begin(); bitmapFont.setColor(0, 0, 0, 1); bitmapFont.setScale(1.0f); bitmapFont.draw(batch, "あいうえお", 10, 100); batch.end(); }
参考ページ:http://www.badlogicgames.com/wordpress/?p=2300
サンプルで使用させていただいたフォント:やさしさゴシック
サンプルソースのダウンロード
0 件のコメント:
コメントを投稿