Javaでプラットフォームで利用可能なFont一覧を表示するには、GraphicsEnvironment#getAllFontsメソッドを使います。すると、Fontオブジェクトのリストが手に入ります。ちなみに、Javaでは、physicalフォントとlogicalフォントを扱えます。
Fontクラスにはいくつかのメソッドがありますが、フォント名を取得するには3つのメソッドがあります。これらのメソッドの違いは知っておいた方が良いでしょう。
- Font#getFontNameメソッド … フォントフェース名取得
- Font#getFamilyメソッド … フォントファミリー名取得
- Font#getNameメソッド … 論理名取得
コンソール画面へ一覧を表示するクラスは次のようになります。
package org.sssg.soft.sample.fontlist; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.util.Arrays; import java.util.List; public class FontList { final private List<Font> values; public FontList() { GraphicsEnvironment genv = GraphicsEnvironment .getLocalGraphicsEnvironment(); Font[] font = genv.getAllFonts(); values = Arrays.asList(font); } public void exec() { for (Font font : values) { System.out.println(getLabel(font)); } } public List<Font> getValues() { return values; } public String getLabel(Font font) { String s = font.getName(); if (!font.getName().equals(font.getFontName())) { s = s + " [" + font.getFontName() + "]"; } return s; } public static void main(String[] args) { FontList app = new FontList(); app.exec(); } }
簡単ですね!