参考になるページがあまりなく四苦八苦でしたが(汗
基本的には、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 件のコメント:
コメントを投稿