Javaで任意のファイルからフォントを作る。
クライアント・・Swingやアプレットなどでアプリケーションを作る場合や、サーブレットで画像を作る場合に、Javaでフォントを足すにはfont.propertiesを書き換えて・・というのがあるのですが、これはどちらかというとjavaを入れて「日本語が出ない!」とかいうときの対応です。
いちいちひとつのアプリケーションのためにOSにフォントを入れたり、JREの設定を書き換えるというのは面倒だしレベルがあってないと思う人向けに。
それほどのことじゃないのですが、Font.createFontというメソッドがあります。
ファイルかInputStreamでフォントを作れます。なるほど!と思ってそのまま使うと・・
画面に黒い点だけが出てきて、目が点になります。
createFontのあとに、Font.deriveFontを使って、新たな派生フォントを作るのが正解らしい。下にサンプルをつけておきます。
shin
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"));
}
}
この例のフォントはこちらのサイトのものを使用しています。
フリーウェアで、商用・非商用を問わず使っていいのね。フォントファイル自体を配布したり、商用製品に添付したり(これは埋め込みじゃなく、ライブラリのように配ることを意味してるのかな。)、会社のロゴにして商標登録したりしちゃいけないとのことですね。
フリーウェアで、商用・非商用を問わず使っていいのね。フォントファイル自体を配布したり、商用製品に添付したり(これは埋め込みじゃなく、ライブラリのように配ることを意味してるのかな。)、会社のロゴにして商標登録したりしちゃいけないとのことですね。
コメントする