トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

花園フォントとIPA明朝の合成スクリプト

キーワード
最終更新時間:2008年11月01日 06時01分51秒

“自由かつ無償の漢字フリーフォント”花園フォントIPA明朝を合成するスクリプトを公開します。たぶん、IPAフォントのライセンスを見るに合成フォントそのものを配布することはできないと思うので、スクリプトのみを公開します。利用される場合は、各自で花園フォントおよびIPAフォント、そしてFontForgeをご用意ください。FontForgeは多くのLinuxディストリビューションでパッケージングされていると思いますので、適宜aptやyumなどでインストールしてください。

スクリプトについて

ここで公開する合成スクリプトは、M+ OUTLINE FONTSに同梱されているIPAゴシックとの合成スクリプトを改変した……というかほとんど真似しただけのものです。

なお、フォントのパラメータ(?)であるPANOSEというものについては、もとのM+フォント、IPAゴシックとは異なると思われるので、

$ cat detectpanose.pe 
#!/usr/bin/fontforge -script

Hanazono = "hanazono.ttf"

Open(Hanazono);
Print($panose);

というようなスクリプトで得られた

[2,0,6,9,0,0,0,0,0,0]

という値を使用しました。

スクリプトのダウンロード

hanazono+ipa.pe(43)を適当なディレクトリにダウンロードし、実行してください。必要に応じてFontForgeのパスを変更してください。出力見本はhanazono+ipam_mihon.pdf(49)です。以下にスクリプト本体を貼りつけます。なお、スクリプトを実行すると

This font contains both a 'mor[tx]' table and a 'GSUB' table.
 FF will only read feature/settings in 'morx' which do not match features
 found in 'GSUB'.
グリフ 13621 は ".notdef" という名前で, この名前だけはグリフ名として使用できません (.notdef という名前が付けられるのはグリフ 0 だけです)
 FontForge は自動的に名称変更を行います.
フォーマット 6 の照合テーブルが壊れています.最初=65535 最後=13622 フォント内の全グリフ数=306460472

というメッセージが出ますが、これは“No problem; this has always been the case.”ということだそうなので、気にしなくてよいようです。

#!/usr/bin/fontforge -script

Hanazono = "hanazono.ttf"

KanjiFont = "ipam.ttf"

Hanazono_kanji = "hanazono+ipam"

panose_mono = Array(10);
panose_mono[0] = 2
panose_mono[1] = 0
panose_mono[2] = 6
panose_mono[3] = 9
panose_mono[4] = 0
panose_mono[5] = 0
panose_mono[6] = 0
panose_mono[7] = 0
panose_mono[8] = 0
panose_mono[9] = 0

if (FileAccess(Hanazono)<0 || FileAccess(KanjiFont)<0)
	Print("                                                    ")
	Print("                       USAGE:                       ")
	Print("                                                    ")
	Print(" 1) put these two files on current directory.     ")
        Print("      hanazono.ttf                         ")
        Print("      ipam.ttf                                      ")
	Print(" 2) run this script by fontforge.                   ")
        Print("      /usr/local/bin/fontforge -script hanazono++ipa.pe    ")
	Print(" 3) new file will be created.                ")
        Print("      hanazono+ipam.ttf                                ")
	Print("                                                    ")
	Quit()
endif

family = Hanazono_kanji
Open(Hanazono);
MergeFonts(KanjiFont);
SetFontNames(family + "-Regular", family, family + " Regular", "Regular", "")
SetTTFName(0x0411,1,"花園明朝+IPA明朝");
SetTTFName(0x0411,4,"花園明朝+IPA明朝 Regular");
Generate(family + ".ttf", "", 4)
Close()