PC-98のフォントをTrueTypeフォントに変換する

NEC PC-9800(PC-9801, PC-9821) のフォントをTrueTypeフォントに変換してみました。
変換したフォントは WindowsMac OS XGNU/Linux で表示させることができます。

表示例



変換に使用したプログラムを
https://bitbucket.org/hikaen2/ttf-pc9800/downloads/ttf-pc9800-20130323.tar.gz
からダウンロードできます。

特長

  • アウトラインフォントを生成する

  • PC-9800にない文字を東雲フォントで補う(例:∈∋⊆⊇⊂⊃∧∨⇒⇔∀∃⌒∂∇≪≫∽∝∬ʼn♯♭♪†‡¶◯尭槙遥瑶凜熙)
  • Debian(系) GNU/Linux で簡単に作れる(がんばればCygwinでも作れます)

必要なもの

以下のものが揃えばOSはなんでもいいはずです。私はDebian(6,7,8)とCygwin(32bit)で動作確認しました。64bitのCygwinではうまくいきませんでした。

  • FONT.ROM - PC-9800のフォントROMのイメージ。Neko Project II の GETBIOS などであらかじめ吸い出しておいてください。
  • Make
  • sed
  • Ruby
  • FontForge
  • Potrace
  • bdfresize

変換方法

プログラムのアーカイブを展開し、その中の data ディレクトリに FONT.ROM という名前でフォントROMのイメージを配置して、make してください。
make に成功すると compiled ディレクトリの中に pc-9800.ttf が生成されます。

Debian GNU/Linux (6, 7, 8) での例
# apt-get install make ruby fontforge-nox potrace bdfresize  # ←必要なパッケージをインストールする(rootかsudoで)
# apt-get install ca-certificates                            # ←wget で https できないときはこれを入れる

$ wget https://bitbucket.org/hikaen2/ttf-pc9800/downloads/ttf-pc9800-20130323.tar.gz
$ tar zxf ttf-pc9800-20130323.tar.gz
$ cd ttf-pc9800-20130323
$ cp /path/to/FONT.ROM data/FONT.ROM                         # ←あらかじめ吸い出しておいたフォントROM(パスは適宜読み替えてください)を配置する
$ make                                                       # ←makeする。fontforgeが警告を吐きますが問題ありません
Cygwin(1.7〜)での例

1. Cygwin (32-bit installation) をインストールする。
デフォルトのパッケージの他に以下のパッケージをインストールする。
gcc-core libmpfr4 libiconv libxml2-devel make ruby potrace wget

2. Cygwin Terminalで

  # ↓FontForgeをインストールする
$ wget http://downloads.sourceforge.net/project/fontforge/fontforge-source/fontforge_full-20120731-b.tar.bz2
$ tar jxf fontforge_full-20120731-b.tar.bz2
$ cd fontforge-20120731-b
$ ./configure
$ make
$ make install
$ cd ..

  # ↓bdfresizeをインストールする
$ wget http://openlab.ring.gr.jp/efont/dist/tools/bdfresize/bdfresize-1.5.tar.gz
$ tar zxf bdfresize-1.5.tar.gz
$ cd bdfresize-1.5
$ sed -i '/*malloc();/d' charresize.c    # ←これをしないとコンパイルエラーになる(Debianのパッチを参考にしました)
$ ./configure
$ make
$ make install
$ cd ..

  # ↓フォントをビルドする
$ wget --no-check-certificate https://bitbucket.org/hikaen2/ttf-pc9800/downloads/ttf-pc9800-20130323.tar.gz
$ tar zxf ttf-pc9800-20130323.tar.gz
$ cd ttf-pc9800-20130323
$ cp /path/to/FONT.ROM data/FONT.ROM     # ←あらかじめ吸い出しておいたフォントROM(パスは適宜読み替えてください)を配置する
$ make                                   # ←makeする。fontforgeが警告を吐きますが問題ありません

おまけ. 円記号の割り当てについて

生成したフォントのU+005C(REVERSE SOLIDUS)には円記号ではなくバックスラッシュを割り当てています。円記号はU+00A5(YEN SIGN)に割り当てています。つまりUnicode的に正しい割り当てになっています。
もし U+005C に円記号を割り当てたければ(CP932的割り当て)、data/EXT.TXT の
0x00FC 0x005C

0x005C 0x005C
に書き換えてください。
例:

sed -i 's/0x00FC\t0x005C/0x005C\t0x005C/' data/EXT.TXT

おまけ

2016/2/11追記
Windows 10 + Cygwin 2.4 (32bit)でも作れました。64bitのCygwinではだめだと思います。