DJGL-フォントについて

「DJGL-フォントについて」の編集履歴(バックアップ)一覧に戻る

DJGL-フォントについて - (2016/12/07 (水) 20:23:19) のソース

*外部フォントの使用
----
ゲームを作成するときJavaの標準のフォントを使うと、見た目が非常にダサくなりやすい。
そのため、多くの場合は外部フォントがよく使われる。
このページでは外部フォントの使い方について記述する。

**外部フォントを用意
フォントファイルの拡張子は、ttfやotfなどが挙げられるが、Javaの場合ttfが確実なので
ここではtegaki.ttfというフォントファイルを例に解説を進める。
フォントファイルの入手の手段には、フリーフォントをダウンロードしてくる、自作するなどが挙げられる。
以下のサイトでは、漢字にはほとんど対応していないが、比較的かんたんに自作フォントを作成できる。
[[http://www.paintfont.com/>http://www.paintfont.com/]]

**導入
JavaにはFontというクラスがあるのでこれを使っていく。
srcの下にtegaki.ttfがあるとき以下のように記述することでフォントを使用できる。


----
//この{{}}内にソースコードを貼り付ければ行番号とJavaのハイライトが付きます
#highlight(linenumber,java){{
コード貼付け用
import java.awt.Color;
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.GraphicsEnvironment;
import java.io.IOException;

import densan.s.game.drawing.Drawer;
import densan.s.game.manager.GameManager;
import densan.s.game.manager.Updatable;


public class FontTest implements Updatable{
	/**
	 * フォントを保存する参照型変数
	 */
	private Font tegakiFont;
	
	private int counter = 0;
	
	private FontTest(){
		//各種例外を投げる事があるのでtry-catch文を使う
		try {
			//ここでフォントを作成
			tegakiFont = Font.createFont(Font.TRUETYPE_FONT, FontTest.class.getClassLoader().getResourceAsStream("tegaki.ttf"));
		} catch (FontFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		//そのままだと見えないぐらい小さいので適当なサイズに変更
		tegakiFont = tegakiFont.deriveFont(60.0f);
		
		//作成したフォントを登録
		GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(tegakiFont);
	}

	@Override
	public void update() {
		counter++;
	}

	@Override
	public void draw(Drawer d) {
		d.setFont(tegakiFont);
		d.setColor(Color.BLACK);
		d.drawStringCenter(Integer.toString(counter % 120), 320, 240);
		
	}
	
	public static void main(String[] args) {
		GameManager gm = GameManager.getInstance();
		gm.createFrame(640, 480, "FontTest");
		gm.setUpdatable(new FontTest());
	}

}

}}


//「画像」と書かれているところにアップロードした画像のファイル名を入れれば画像が表示されます。
#ref(tegaki.png)



**まとめ
----
----
#comment_num2