Javaで任意のファイルからフォントを作る。

| | コメント(0)

クライアント・・Swingやアプレットなどでアプリケーションを作る場合や、サーブレットで画像を作る場合に、Javaでフォントを足すにはfont.propertiesを書き換えて・・というのがあるのですが、これはどちらかというとjavaを入れて「日本語が出ない!」とかいうときの対応です。

いちいちひとつのアプリケーションのためにOSにフォントを入れたり、JREの設定を書き換えるというのは面倒だしレベルがあってないと思う人向けに。

それほどのことじゃないのですが、Font.createFontというメソッドがあります。
ファイルかInputStreamでフォントを作れます。なるほど!と思ってそのまま使うと・・
画面に黒い点だけが出てきて、目が点になります。

createFontのあとに、Font.deriveFontを使って、新たな派生フォントを作るのが正解らしい。下にサンプルをつけておきます。

shin

font.png

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class FontTest {
    public static void main(String[] args) throws Exception {
        Font font = Font.createFont(Font.TRUETYPE_FONT, new File("KANNANA.TTF"));
        font = font.deriveFont(15f);
        String msg = "ざくらではかいはつできるひとをぼしゅうしています。";
        
        BufferedImage img = new BufferedImage(400,50,BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = (Graphics2D)img.getGraphics();
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setColor(new Color(0,0,0,0));
        g.fillRect(0, 0, img.getWidth(), img.getHeight());
        g.setColor(new Color(0,0,0,255));
        g.setFont(font);
        g.drawString(msg, 20, 30);
        
        ImageIO.write(img, "png", new File("font_test.png"));
    }
}
この例のフォントはこちらのサイトのものを使用しています。
フリーウェアで、商用・非商用を問わず使っていいのね。フォントファイル自体を配布したり、商用製品に添付したり(これは埋め込みじゃなく、ライブラリのように配ることを意味してるのかな。)、会社のロゴにして商標登録したりしちゃいけないとのことですね。

カテゴリ

コメントする

このブログ記事について

このページは、ザクラが2008年6月30日 21:08に書いたブログ記事です。

ひとつ前のブログ記事は「Google Developer Dayのアンケート その2」です。

次のブログ記事は「MySQLの正規表現」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

    

リンク

Powered by Movable Type 4.0