Linux上でIPAフォントからビットマップフォントを削除する
普段使用するフォントにIPAフォントを使っているが、fontconfigの設定が悪いのか一部のプログラムでビットマップフォントが優先的に表示される。そこでIPAフォントからビットマップフォントをすべて除去することにした。検索エンジンでビットマップフォントの削除法を調べると、Microsoft純正のツールや、TTEditを使うなどWindows上で行う方法ばかりヒットしてLinux上でのやり方が分からない。
そこでとりあえずFontforgeを起動して見たところ、起動時にビットマップフォントを読み込むかどうかを尋ねるダイアログが表示され、いいえを選択→ファイル→フォントを出力で、簡単にビットマップフォントを削除できた。
ただ、この方法でも一つずつ手で処理して行くのは面倒なので、自動で処理するスクリプトを書いた。
#!/bin/bash #rm_bmpfnt.sh: カレントディレクトリにfontdirというディレクトリを作成し、 #引数で受け取ったフォントファイルからビットマップフォントを取り除き、 #その下にフォントを出力する。 NEWDIR="${PWD}/fontdir" ; mkdir $NEWDIR 2> /dev/null; if [ ! -d $NEWDIR -o ! -w $NEWDIR ] ; then echo "${NEWDIR}に書き込む権限がありません。" ; return 1; fi while [ $# -gt 0 ] ; do /usr/bin/fontforge -c "Open(\"$1\"); Generate(\"${NEWDIR}/${1##*/}\",\"\");" ; shift ; done
以下のようにして使う。
$ []chmod a+x rm_bmpfnt.sh[]
$ []./rm_bmpfnt.sh [][]path_to_font[][]/*.ttf[]
追記2/29
Fedora8では問題なく動作するが、Ubuntu(Hardy)では、以下のエラーが吐かれる。
Copyright (c) 2000-2007 by George Williams.
Executable based on sources from 02:03 GMT 10-Nov-2007.
File "", line 2
Generate("/home/tks/fontdir/hogehoge.ttf","");
^
IndentationError: unexpected indent
そこでOpenとGenerateの行を一行にして実行したが、やはりエラーが吐かれる。
Copyright (c) 2000-2007 by George Williams.
Executable based on sources from 02:03 GMT 10-Nov-2007.
Traceback (most recent call last):
File "", line 1, in
NameError: name 'Open' is not defined