web-dev-qa-db-ja.com

Javaでカスタムフォントを使用するにはどうすればよいですか?

私はJavaでプログラムを作成しました。これは、デフォルトではどのオペレーティングシステムにも存在しない特別なフォントを使用します。

Javaでこの特別なフォントをオペレーティングシステムに追加できますか?たとえば、Windowsでは、このフォントを特別なFontsフォルダーにコピーできます。

可能であれば、どのように?

42
Mahdi_Nine

フォントファイル(otf、ttfなど)をパッケージに含める場合、ここで説明する方法でアプリケーションでフォントを使用できます。

Oracle Java SE 6:Java.awt.Font

この例を示すOracleの tutorial available があります。

try {
     GraphicsEnvironment ge = 
         GraphicsEnvironment.getLocalGraphicsEnvironment();
     ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
} catch (IOException|FontFormatException e) {
     //Handle exception
}

使用するたびにパッケージからファイルをリロードしないようにするために、おそらくこれを何らかのリソースローダーでラップします。

元の質問により密接に関連する回答は、アプリケーションのインストールプロセスの一部としてフォントをインストールすることです。そのプロセスは、選択したインストール方法によって異なります。デスクトップアプリでない場合は、提供されているリンクを調べる必要があります。

46
Cᴏʀʏ

これが私がやった方法です!

//create the font

try {
    //create the font to use. Specify the size!
    Font customFont = Font.createFont(Font.TRUETYPE_FONT, new File("Fonts\\custom_font.ttf")).deriveFont(12f);
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    //register the font
    ge.registerFont(customFont);
} catch (IOException e) {
    e.printStackTrace();
} catch(FontFormatException e) {
    e.printStackTrace();
}

//use the font
yourSwingComponent.setFont(customFont);
12
Florin Virtej

Javaチュートリアル から、新しいフォントを作成してグラフィック環境に登録する必要があります。

_GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("A.ttf")));
_

この手順が完了すると、フォントはgetAvailableFontFamilyNames()の呼び出しで使用可能になり、フォントコンストラクターで使用できます。

8
dogbane

このフォントを使用してgraphics2dなどで描画する場合、これは機能します。

InputStream stream = ClassLoader.getSystemClassLoader().getResourceAsStream("roboto-bold.ttf")
Font font = Font.createFont(Font.TRUETYPE_FONT, stream).deriveFont(48f)
5
Heinrisch