Javaで使えるフォント名を取得する方法

 

Javaが目指しているのは、Write once, run anywhere
すなわち、書いたプログラムは(作り直さなくとも)あらゆる環境で
(WindowsでもMACでもLinuxでも携帯でも)動くということです。

毎度、当サイト管理人のイガジーです。

Javaが動く環境なら皆同じと言えるか?というと、現実には細かな違いが
出てきます。その中でも目立つのは、フォントの違いでしょう。
(ブラウザやpdf文書でも、フォントの違いは悩みです)

論理フォントだけではイマイチなので、自分専用と割りきって
きれいなフォントを使いたいこともあるでしょう。

Javaで使えるフォントを調べるには
Font [] fonts=GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();とすると、配列が得られるので
fonts[i].getName();でフォント名が得られます。

実際に、そうやって得られたフォント名を見てみると、
Monospaced.bold
Monospaced.bolditalic
Monospaced.italic
Monospaced.plain
というようなものが出てくるので、boldやitalicなどは削除した方がよいですね。

また、日本語が表示できないフォントは除去したいこともあるでしょう。

日本語が表示できるかどうかは、Font.canDisplay(‘漢’) で分かるようです。
(’漢’でなくとも’あ’でも良い)

という訳で、フォントリストを表示するプログラム例を掲載しておきます。

import java.awt.Font;
import java.awt.GraphicsEnvironment;


public class FontsList {
	Font [] fonts=GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();

	FontsList(String as[]){
		char dspchr=0;
		int fnumber=fonts.length;
		int sp,n=0;
		if (as.length>0) dspchr=as[0].charAt(0);

		for (int i=0;i<fnumber;++i){
			if (dspchr!=0) {
				if (!fonts[i].canDisplay(dspchr)) continue;
			}
//			if (!fonts[i].canDisplay('A')) continue;
			String fns=fonts[i].getName();

			if (-1!=fns.indexOf("bold")) continue;
			if (-1!=fns.indexOf("Bold")) continue;
			if (-1!=fns.indexOf("italic")) continue;
			if (-1!=fns.indexOf("Italic")) continue;
			if (-1!=fns.indexOf("イタリック")) continue;
			if (-1!=fns.indexOf("ボールド")) continue;
			sp=fns.indexOf(".plain");
			if (-1!=sp) fns=fns.substring(0,sp);
			sp=fns.indexOf(" Regular");
			if (-1!=sp) fns=fns.substring(0,sp);
			sp=fns.indexOf("-Regular");
			if (-1!=sp) fns=fns.substring(0,sp);

			System.out.println(fns);
			++n;

		}// end for
	
		System.out.println(String.format("\n# Number of fonts=%d/%d", n,fnumber));
	}

	public static void main(String[] args) {
		new FontsList(args);
	}

}

Eclipse上で走らせるとConsole(コンソール)エリアに
ずらずらとフォント名が表示されます。
Run configurations で Arguments に「漢」とか「あ」を入れると
日本語が表示されるものだけになります。

Eclipseを使いたくない人は、jar にして、コマンドプロンプトなどで
java -jar fontslist.jar 漢
などと、入力して動かしてください。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)