98文字の組み込み

98文字の組み込み

 OS/2では基本的に98文字(NEC機種依存文字:丸囲み数字やローマ数字など)をサポートしていません。しかし、以下の方法を使えばOS/2でも表示可能になります。

【注】Warp 4.52では98文字をサポートをした。

TrueTypeフォントを使う
OS/2付属のリョービイマジクス社製TrueTypeフォントをはじめ、ほとんどのTrueTypeは98文字をサポートしている。したがって、アプリケーションなどで表示フォントとしてTrueTypeを指定すれば98文字も正常に表示される。ただし、TrueTypeは汚くて重いため用途は限られる。

A-Fontを使う
A-Font(throw氏作)はFONTX技術をOS/2に応用したツールで、ラスターフォントでも98文字が使用できるようになる優れもの。NIFTY-ServeのFOS2から入手できる。しかし、FONTXの知識が大前提であるし、日本語フォントの場合、基本的に明朝16/24ドットしかサポートしていない。他のサイズのフォントは16/24ドット・フォントを元にリサイズして作成されるため汚くなる。その場合、98文字以外の文字も同じように汚くなってしまい、かなり見苦しい。

PC-9801版OS/2からフォントを移植する
OS/2もPC-9801版ならば98文字をサポートしている。そこで、PC-9801版OS/2を購入して、そこからフォントのみをAT版に移植する。この方法を使えば、あらゆるフォントであらゆる文字が奇麗に表示できる。ただし、そのためだけに、わざわざ数万円を出してPC-9801版OS/2を購入しなければならないのが問題。

●PC-9801版OS/2のフォントの移植方法

 ここでは、3番目の方法を具体的に説明します。まず、NECのオンラインショップ(http://www.nec.co.jp/amuseplus/vip)などから、PC-9801用のOS/2 Warp 4を購入します。そして、以下のファイルを置き換えます。
    [98版OS/2CD-ROM]			[IBM版OS/2のシステムドライブ]
    \V3FONT\OLDJIS\FNTCALLS.DLL	 →	\OS2\DLL\FNTCALLS.DLL
    \V3FONT\OLDJIS\PMNLSFD1.FDR  →	\OS2\DLL\PMNLSFD1.FDR
    \V3FONT\OLDJIS\$JPNZN16.FNT  →	\OS2\SYSDATA\$JPNZN16.FNT
    \V3FONT\OLDJIS\$JPNZN24.FNT  →	\OS2\SYSDATA\$JPNZN24.FNT
    \V3FONT\OLDJIS\NECDM20.JFD   →	\OS2\SYSDATA\
  さらに、必要に応じてフォント(NECD***.JFD)を\OS2\SYSDATA\にコピーします。なお、「NECD」のあとのMは明朝、Gはゴシック、そのあとの数字はドット数。

【注意】フォントは必ず\OLDJISディレクトリのものを使う\NEWJISディレクトリの$JPNZN24.FNTと$JPNZN16.FNTにはバグがあって「暴」の字が化ける。

【注意】V3FONT\OLDJISディレクトリにはインストール用バッチファイルがあるが、これはユーティリティ・ディスク等で起動して使用する必要がある。使用中のDLLは変更できないため。おそらく、このインストーラを使えば、上記の置き換えは一発でOKだとは思うが未確認(失敗した場合、収拾がつかなくなりそうなので使っていない)。

 使用方法)INSTV3 D:[Enter]
で、同等のバッチを書いてみた。こっちは必ずピュアDOSで実行すること。
@ECHO OFF
ECHO *************************************
ECHO OS/2 に98文字を組み込むバッチ
ECHO このバッチは必ずピュアDOSで実行する事
ECHO *************************************
PAUSE
@ECHO ON
REN D:\OS2\DLL\FNTCALLS.DLL *.DL_
COPY FNTCALLS.DLL D:\OS2\DLL
REN D:\OS2\DLL\PMNLSFD1.FDR *.FD_
COPY PMNLSFD1.FDR D:\OS2\DLL
REN D:\OS2\DLL\PMNLSFD2.FDR *.FD_
COPY PMNLSFD2.FDR D:\OS2\DLL
REN D:\OS2\DLL\PMNLSFD3.FDR *.FD_
COPY PMNLSFD3.FDR D:\OS2\DLL
REN D:\OS2\SYSDATA\$JPNZN16.FNT *.FN_
COPY $JPNZN16.FNT D:\OS2\SYSDATA
REN D:\OS2\SYSDATA\$JPNZN24.FNT *.FN_
COPY $JPNZN24.FNT D:\OS2\SYSDATA
COPY *.JFD D:\OS2\SYSDATA

●各ファイルの役割

PMNLSFD?.FDR
アプリケーションの要求と実際のフォント・ファイルの橋渡しをするドライバ。おそらく、アプリケーションはこのPMNLSFD?.FDRにフォントを要求し、このドライバが要求に応じてグリフ(字形)データ名を決めるのだろう。IBM版のPMNLSFD?.FDRはPS55D???.JFDまたは$JPNZN??.FNTを指定するし、NEC版(Warp 3)のPMNLSFD?.FDRはNECD???.JFDまたは$JPNZN??.FNTを指定する。

FNTCALLS.DLL
PMNLSFD?.FDRによって呼び出されるグリフデータは決まるが、グリフデータは画面に表示されるイメージと同じ形式で格納されているわけではない。一定のルールにしたがってグリフデータを展開し、画面イメージを生成しなければならない。これを受け持つのがFNTCALLS.DLL。98版とIBM版ではグリフデータの内部形式が異なっているため、同じFNTCALLS.DLLでも互換性はない。

$JPNZN16.FNT/$JPNZN24.FNT/NECDM??.JFD/PS55D???.JFD
文字のグリフデータ・ファイル(実際の字形を記憶しているファイル)。$JPNZN16.FNT/$JPNZN24.FNTは、それぞれ16ドット明朝体/24ドット明朝体で、この2種類のみ特別なファイル名を使用しているのはDOS時代の名残り。それ以外のフォントは*.JFD形式に統一されている。*.FNTと*.JFDでは内部形式も異なるようだ。また、同じ*.FNTでも、NEC版とIBM版では内部形式が異なるようだ。
【注意】もし、PMNLSFD1.FDRをNEC版に変更したのに、グリフ・データをPS55D???.JFDのままにしておいたり、わざわざNEC版のグリフ・データNECD???.JFDをPS55D???.JFDにリネームしてしまうと、該当ファイルなし、ということで、システムは$JPNZN16.FNTや$JPNZN24.FNTをリサイズして表示する。当然、表示は物凄く汚くなる。

【参考】98版OS/2Warp 4ではドライバ名が変更され、IBM版と同じなっている。中身はどこ製かちょっと判らない。

	Warp 3	NECD***.FDR
	Warp 4	PS55D***.FDR
【参考】NEC版のフォントは字面が若干小さい。このあたりは好みの問題か。特に半角フォントがキレイじゃないな。少々気になる。

(99.09.28)