LWJGFont ver 1.0 を公開しました
2014/2/25 に、LWJGFont ver 1.0 をリリースしました。
LWJGFont はお手持ちのフォントを使って手軽に文字列表示をするための LWJGL のサードパーティライブラリです。あらかじめ任意のフォントを任意のサイズで画像イメージに描き出しておき、実行時にはそれを切り貼りすることで文字列を表示させます。
特に LWJGL で日本語表示(テクスチャーマッピング)する際の壁となる日本語文字画像の用意、日本語文字画像の切り貼り作業をサポートしているため、java.awt.Graphics.drawString() の感覚で文字列を表示することができます。LWJGFont は等幅フォントに加え、プロポーショナルフォントにも対応しています。プロポーショナルフォントは文字によって文字幅が異なるため、手動でテクスチャーマッピングしようとすると手間がかかりますが、LWJGFont ではプロポーショナルフォントの文字幅についても自動計算して表示するため、手軽に綺麗な文字列表示を実装することができます。
2014/03/02 追記
LWJGFont ver 1.1 がリリースされています。
Windows 環境での不具合を修正した安定版となりますので、そちらをご利用ください。
ダウンロード
LWJGFont は公式ページからダウンロードすることができます。
また、maven をご利用の方は、pom.xml に以下の設定を追加することで入手できます。 <dependencies>
...
<dependency>
<groupId>net.chocolapod</groupId>
<artifactId>lwjgfont</artifactId>
<version>1.0</version>
</dependency>
...
</dependencies>
LWJGFont のしくみ
簡単に LWJGFont のしくみについて触れておきたいとおもいます。
LWJGFont は任意のフォントで、アルファベット、ひながなカタカナ、数字、常用漢字約 2000 文字をすべて描きこんだ画像ファイルを生成します。また、画像ファイルのどこにどの文字が書き込まれているかというマッピング情報を持ち、実際に Java プログラムから各文字を表示するための class ファイルも作り出します。これらのファイルを jar ファイルにまとめるので、LWJGFont と LWJGFont が生成した jar ファイルをクラスパスに追加することで、LWJGL から好きなフォントでの文字列表示ができるようになります。
詳しい使い方についてはチュートリアルを用意しましたのでそちらをご覧下さい。
続きを読む
LWJGFont 開発
コメント (1) 2014/02/25 08:39:05
LWJGFont の開発をはじめました。
LWJGL で好きな True Type Font を使うためのライブラリ LWJGFont を作り始めました。
以前書いた記事: LWJGL で日本語フォントを使ってみるで、Java AWT の Graphics を使って文字列を描き、それを Image からテクスチャーに随時変換して表示していく方法についてご紹介しました。Java SDK の java.awt.Font を使って True Type Font を読み込むので、比較的簡単な実装で日本語のテキストを LWJGL で表示することができます。ただ、OpenGL ではテクスチャーの生成にそれなりのコストがかかるため、表示する文字列が変わるたびにテクスチャーを再生成するというのはリアルタイム性に課題が残るやり方でした。
LWJGL をラップする形で実装されている Slick2D では TrueTypeFont や UnicodeFont というクラスが用意されているそうですが、サンプルプログラムを見る限り、これらのクラスも java.awt.Font を利用して文字列を表示しているようです。.ttf ファイルの読み込み自体は実行時に行われるようなので、おそらく同じような仕組みで動いているのではないかと思います。
そうは言っても、文字列表示はゲームでも重要な要素であるわりに、LWJGL で実現しようとするとそれなりに敷居が高いのが現状です。そこで、以前の日本語フォントを表示する方法とは少し違ったアプローチで、開発者にとって、もう少し手軽に文字列表示を実現しようというのが LWJGFont 開発のゴールになります。
ライブラリを準備する際にひと手間加えなければならないのですが、文字列の表示処理自体は以下のようなシンプルな呼び出しでできるようになります。MyFont myFont = new MyFont();
myFont.drawString("捲土重来!!!", 100, 400, 0);
LWJGFont で提供するのは、Java AWT などでよく見かける drawString(String, flaot, float, float) というメソッドです。第一引数は表示する文字列、第二~第四引数は表示する座標(X, Y, Z)になります。
今週にかけてそれなりに時間をかけていたので、ようやくひとまずの完成形が見えてきました。
今回は開発の経緯とコンセプトを少し書くだけですが、そう遠くないうちに LWJGL のサードパーティライブラリとして公開できるのではないかと思います。
2012/02/25 追記
LWJGFont ver 1.0 を公開しました。公式ページをご覧ください。
続きを読む
LWJGFont 開発
コメント (0) 2014/02/13 23:59:31