PC-98のフォントをWindows用フォントに変換

固定ディスク起動メニュープログラム
NEC PC-9801/PC-9821シリーズの文字パターンROMのフォントデータをWindowsで使えるTrueTypeフォント(ビットマップ)に変換してみようと思います。

※ちなみに上の画像は下2行をわざとMS ゴシックにして比較。丸囲み文字はPC-98フォントにならず。
画像はネガポジ反転させればもっとそれらしく見えるようになるかと思います。

○大変お世話になったサイト
NEC PC-9821/PC-9801(以下NEC98)の漢字ROMをTrueType?のビットマップフォントに移植する (at http://arthur.jpn.org/)

あれこれ作業が非常に面倒なので、必要なツールを一つにまとめてバッチファイルを作りました。
下記リンクに置いてありますので詳しくはそちらを参照してください。(2011/11/22)


http://radioc.web.fc2.com/

以下、昔に書いたのをそのまま残しておきます。


○準備:必要なツール、ソフトを入手する
・fontx204a.lzh http://www.hmsoft.co.jp/lepton/software/dosv/fontx.htm
・f2b.tgz http://www.wheel.gr.jp/~dai/software/f2b-readme.html
・breakttc.exe ftp://ftp.microsoft.com/developr/drg/truetype/ttsdk.zip
・ttftools.zip http://www003.upp.so-net.ne.jp/kish/font/ttf_win.html
・Visual C++などのCコンパイラ
(・bdf2bmp06.zip http://hp.vector.co.jp/authors/VA013241/font/bdf2bmp.html)(作業途中の確認用。今回は使用しない。)


○準備:ROMデータからフォントファイルを作成(PC-98上で行う)
文字パターンROMのデータ取得にはFONTXに付属するmkxfnt98.exeを使います。
FONTX自体はPC/AT互換機上のDOSでフォントを利用するためのソフトですが、今回は本体は使わず付属のツールのみを利用します。

fontx204a.lzhを解凍してその中にあるmkxfnt98.exeをPC-98に持っていき、PC-98のMS-DOS上でmkxfnt98.exeをスイッチを付けずに実行します。
(PC-98版Windows 95, 98のMS-DOSモードでも可)
ハードウェアの制約によりフォントファイル作成中に画面表示がバグる事がありますが、処理が終われば元に戻るはずです。
5つのファイルが作成されますが、このうち使用するファイルは jpnhn16x.98, jpnzn16x.98の2つです。


○準備:ソースコードを編集、ビルド
ここから先の作業はPC/AT互換機のWindows上(Windows XP推奨)で行います。
PC/AT互換機またはPC-98のWindows 95〜2000上でもできなくはないですが、少し古いCコンパイラを入手する必要があります。

作成したフォントファイルはFONTXで扱うための形式になっているので、これを一度BDF形式に変換します。
BDF形式とはAdobeが提唱したビットマップフォント形式で主にUnix系OSで使われます。
BDF形式への変換にはfontx2bdfを利用しますが、ソースコードしかなくこのままでは利用できません。

f2b.tgzを解凍したらテキストエディタでfontx2bdf.cを開き、"#ifdef __MSDOS__"となっているところを"#ifdef MSDOS"に修正します。
このファイルをCコンパイラでコンパイル、リンクするとfontx2bdf.exeができます。
(Visual C++ 2008のcl.exeで問題なくビルドできます。)


○手順
いろんなツールを何度も使うので非常に手間がかかる上、作業中にファイルが溜まってわけがわからんことに。
というわけでここから先の面倒な作業を一括でやってくれるバッチファイルを作ってみました。
解凍したツールやファイルなどは以下のように置いて下さい。
jpnhn16x.98, jpnzn16x.98, fontx2bdf.exe は上の作業で作成したファイルです。

 

rem 必要なファイルとフォルダ構成
rem 
rem (作業用フォルダ)\
rem  ├ (このバッチファイル)
rem  ├ breakttc.exe (ttcをttfに分解・変換するツール)
rem  ├ JPNHN16X.98 (文字パターンROMから取得したPC-98半角フォント fontx2形式)
rem  ├ JPNZN16X.98 (文字パターンROMから取得したPC-98全角フォント fontx2形式)
rem  ├ f2b\
rem  │  └ fontx2bdf.exe (fontx2形式をbdf形式に変換するツール)
rem  └ ttftools\ (TrueTypeフォントを操作するツール群)
rem     ├ sbitExtract.exe TrueTypeフォントのビットマップをbdf形式で取り出す
rem     ├ sbitRW.exe TrueTypeフォントのビットマップにbdfフォントを上書きする
rem     └ ttfname.exe TrueTypeフォントの情報(タイトル、バージョン、説明など)を変更する
rem
if not exist breakttc.exe goto error
if not exist JPNHN16X.98 goto error
if not exist JPNZN16X.98 goto error
if not exist f2b\fontx2bdf.exe goto error
if not exist ttftools\sbitExtract.exe goto error
if not exist ttftools\sbitRW.exe goto error
if not exist ttftools\ttfname.exe goto error
rem ---Begin Main---
rem Phase 0
f2b\fontx2bdf.exe < jpnhn16x.98 > jpnhn16x.bdf
f2b\fontx2bdf.exe < jpnzn16x.98 > jpnzn16x.bdf
rem Phase 1
copy %windir%\fonts\msgothic.ttc msgothic.ttc
breakttc.exe msgothic.ttc
chcp 932
ren FONT00.TTF msgothic.ttf
rem Phase 2
copy msgothic.ttf msgothic_h.ttf
copy msgothic.ttf msgothic_z.ttf
ttftools\sbitRW.exe msgothic_h.ttf jpnhn16x.bdf
ttftools\sbitRW.exe msgothic_z.ttf jpnzn16x.bdf
rem Phase 3
ttftools\sbitExtract.exe -o 16 msgothic_h.ttf
ren MS_Gothic-16-JISX0201.1976-0.bdf MS_Gothic_h-16-JISX0201.1976-0.bdf
ttftools\sbitExtract.exe -o 16 msgothic_z.ttf
ren MS_Gothic-16-JISX0208.1983-0.bdf MS_Gothic_z-16-JISX0208.1983-0.bdf
rem 必要であればこの時点でMS_Gothic_z-16-JISX0208.1983-0.bdfの欠損文字を削除 入れ替えを行う。
rem pause
rem Phase 4
ren msgothic.ttf nec98font.ttf
ttftools\sbitRW.exe nec98font.ttf MS_Gothic_h-16-JISX0201.1976-0.bdf
ttftools\sbitRW.exe nec98font.ttf MS_Gothic_z-16-JISX0208.1983-0.bdf
rem Phase 5
del msgothic.ttc
del font*.ttf
del jpnhn16x.bdf
del jpnzn16x.bdf
del MS_Gothic-16-ISO8859-1.bdf
del MS_Gothic-16-JISX0208.1983-0.bdf
del msgothic_h.ttf
del MS_Gothic-16-ISO8859-1.bdf
del MS_Gothic-16-JISX0201.1976-0.bdf
del msgothic_z.ttf
del MS_Gothic_h-16-JISX0201.1976-0.bdf
del MS_Gothic_z-16-JISX0208.1983-0.bdf
@echo ttfname.exeを起動します。
@echo フォント名を他のフォントと重複しないよう、ユニークな名前に修正してください。
ttftools\ttfname.exe nec98font.ttf
rem ---End Main---
goto eof
:error
@echo 必要なファイルが不足しています。
@pause
:eof

(PC/AT互換機上のWindows 7(32ビット版)で動作確認済。)

ttfnameの画面ではSubFamilyName以外の項目を全部変えておいた方がいいでしょう。
著作権やバージョンは空欄でも構いません。
作業がすべて終わると作業用フォルダに nec98font.ttf というファイルができているのでこれをダブルクリック。
サイズ12だけがPC-98のフォントで他のサイズがMS ゴシックになっていれば成功です。
「インストール」ボタンをクリックすればフォントがインストールされます。


○このフォントの特徴
・サイズ 12ポイントを選ぶとPC98フォントを表示。
その他のポイントを選ぶとMS ゴシックを表示。
・Vista以降では第三水準・第四水準漢字が出ないので、それらの文字を使わないのであればIMEプロパティを開き「変換」→「詳細設定」→「変換文字制限」でJIS X 0208のみに設定。
・PC98の文字コードとフォントの対応はJIS X 0208の1978年の版を元にしているため、1983年の規格改訂での非互換の入替えが考慮されていない。
計26組の漢字のビットマップが逆になっているので、必要ならバッチファイルを途中で止めてBDFファイルを書き換えること。
入替えの詳細についてはJIS X 0208:1997の附属書7 区点位置詳説を参照。


旧ブログでのコメント

AUTHOR: Unknown
URL:
DATE: 2012/03/16 16:15:16
Unknown
バッチファイルを使わせていただきました。
大変すばらしいです。
ありがとうございました。


inserted by FC2 system