1999/11/21    fstobdfw

わけあって TrueType フォントからビットマップフォント(BDF)を 作る必要があったので、XFree86 付属のフォントサーバーの提供する任意のフォントを BDF に 変換するアプリケーション fstobdf 2バイトフォントを扱えるようにするパッチ をあてて作りなおす。 このパッチの出所はあまりに昔のことなので失念。 本来は、XFree86 全体を作りなおしてRPM化するのが正当なやり方であろうが、 面倒なので、tarball
fstobdfw.tar.gz
にした。標準のものを上書きしないように fstobdfw と名前が 変えてある。

使い方は、まず、TrueType 対応の xfs を入れてなければ入れる。

# tar -zxvf <somewhere>/XFree86-xfs-3.3.3.1+xtt1.2-49a.tar.gz -C /
# (cd /usr/X11R6/bin; mv xfs xfs.ORIG; ln -s xfs-TT xfs)
# vi /etc/X11/fs/config
....
catalogue = .......,
        ...........,
        /usr/X11R6/lib/X11/fonts/TrueType
.....
deferglyphs = all
もちろん、TrueType フォントも入れて置かねばならない。xfs が動いていなければ
# /etc/rc.d/init.d/xfs start
で起動する。フォントパスにフォントサーバーが入っていなければ
$ xset fp+ unix/:-1
で、パスに加える。これで、fstobdfw を使う準備は完了。後は
# tar -zxvf <somewhere>/fstobdfw.tar.gz -C /
$ fstobdfw -s unix/:-1 \
  -fn -watanabe-mincho-medium-r-normal--12-120-75-75-c-120-jisx0208.1983-0 \
  > min12.bdf
などとして、bdf フォント(上の例では min12.bdf)を生成する。これはアスキーファイルなので後は手で編集できる。
ちなみに上の例では、vi で開いてみると
$ vi min08.bdf
STARTFONT 2.1
COMMENT
COMMENT  copyright
COMMENT
COMMENT  WARNING:  This bdf file was generated from a font server using
COMMENT  fstobdf.  The resulting font is subject to the same copyright,
COMMENT  license, and trademark restrictions as the original font.  The
COMMENT  authors and distributors of fstobdf disclaim all liability for
COMMENT  misuse of the program or its output.
COMMENT
FONT -watanabe-mincho-medium-r-normal--13-120-75-75-c-125-jisx0208.1983-0
SIZE 12 75 75
FONTBOUNDINGBOX 13 12 0 -2
STARTPROPERTIES 24
FOUNDRY "watanabe"
FAMILY_NAME "mincho"
WEIGHT_NAME "medium"
SLANT "r"
SETWIDTH_NAME "normal"
ADD_STYLE_NAME ""
PIXEL_SIZE 13
POINT_SIZE 120
RESOLUTION_X 75
RESOLUTION_Y 75
SPACING "c"
AVERAGE_WIDTH 125
CHARSET_REGISTRY "jisx0208.1983"
CHARSET_ENCODING "0"
FONT "-watanabe-mincho-medium-r-normal--13-120-75-75-c-125-jisx0208.1983-0"
COPYRIGHT "copyright"
RAW_PIXEL_SIZE 1000
RAW_POINT_SIZE 964
RAW_ASCENT 800
RAW_DESCENT 199
RAW_AVERAGE_WIDTH 1000
DEFAULT_CHAR 8481
FONT_ASCENT 10
FONT_DESCENT 2
ENDPROPERTIES
CHARS 7896
STARTCHAR 2121
ENCODING 8481
SWIDTH 1040 0
DWIDTH 13 0
BBX 13 12 0 -2
ATTRIBUTES 0x03e8
BITMAP
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
ENDCHAR
.....
STARTCHAR 2129
ENCODING 8489
SWIDTH 1040 0
DWIDTH 13 0
BBX 13 12 0 -2
ATTRIBUTES 0x03e8
BITMAP
0000
0e00
1100
1100
0100
0200
0400
0400
0000
0400
0000
0000
ENDCHAR
......
のようになっている。BITMAP の部分は16進数であらわされており、これを2進数に変換すれば文字が見えてくる。上の例では、
0000 1110 0000 0000        0e00
0001 0001 0000 0000        1100
0001 0001 0000 0000        1100
0000 0001 0000 0000        0100
0000 0010 0000 0000        0200
0000 0100 0000 0000        0400
0000 0100 0000 0000        0400
0000 0000 0000 0000        0000
0000 0100 0000 0000        0400
で、問題の文字がであることがわかる。たしか、BDF 編集用のアプリケーションがあったような気がしたが忘れてしまった。簡単に作れそうなので作ってみるのもいいかも知れない。

BDF の編集が終わったら、PCF に変換する。

$ sed -e 's;ATTRIBUTES 0x;ATTRIBUTES ;'  min12.bdf |  bdftopcf | gzip -c > min12.pcf.gz
てな具合である。ほんとは、sed しなくていいように fstobdfw にパッチをあてるべきだったが面倒。
 


Back to Keisuke Fujii's MkLinux/LinuxPPC Life