Last Update: 2000-11-23
Subject: Tera Term & Font Message-ID: <1997Feb1.161838.10592@merope.opus.or.jp> Newsgroups: fj.os.ms-windows Date: Sat, 1 Feb 1997 16:18:38 GMTのスレッドで知識を得ました。ここで、Terminal10ポイントの字形は APP932.FONに含まれているという情報を仕入れました。そこで投稿されていた太田さんのツールでフォントファイルを解析してました。
C:\WINDOWS\FONTS> dir *.fonとやって出てくれば copyコマンドでコピーすればいいですが、 システムファイル属性や隠しファイル属性がついている場合は出てこないので、
C:\WINDOWS\FONTS> dir /A:H C:\WINDOWS\FONTS> dir /A:Sとしてみると見つかります。コピーするには、attribコマンドで属性を変える必要があるかもしれません。
0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 8 9 a b c d e fこの表を見ながら手計算です。まあ、156文字程度なら、人がやっても それほど困難はない、と思う。何千文字もあると手計算はしたくないですけど。 ほんとは、computerにやらせるほうがまちがいがなくていいんですけどね。 できたのが、このテキストファイル (8KB) です。
## append00.pl while(<>){ if(length($_) == 36){ s/ //g; #空白を無くす chop; #改行をとりさる print $_ . "00\n"; # 幅x高さが6x12のglyphを 6x13にするため、 # 00を後ろ(フォントの最下部)にappendする }elsif(length($_) >70){ print; # asciiと半角カタカナの境目の行は表示する } #そのほかの行は表示しない }このPerlスクリプトを
C:\home> perl append00.pl <glyph.txt >6x13.txtとして、6x13のglyphデータを作ります。そのとき、pとqのglyphについては、もし高さが13ピクセルだったら線を伸ばしたい、と思ってたので 6x13.txtを手作業で修正しました。
## rmret.pl while(<>){ chop; print; }
C:\home\95knm13> perl rmret.pl <6x13ascii >ascii C:\home\95knm13> perl rmret.pl <6x13kana >kanaでOK。この結果できるテキストファイル、たとえば、kana (2KB) というファイルはこうなっています。改行も空白もない、1行のファイルです。この形式が『狐's バイナリエディタ 2.05』のクリップボード形式です。
バイナリのどこを書き換えればいいか、ですが、上の太田さんのツールで調べてもいいですが、バイナリエディタと 16進->2進ツールがあればできます。ここでは、自作の16進->2進ツールであるbdfvと Perlでなんとかすることにします。
ASCII文字セットにおける最初の表示可能文字は 0x20すなわち半角空白という規格になっていますが、これは書き換える必要もない文字なので、次の文字 0x21 すなわち「!」を探します。APP932.FON をバイナリエディタで開き、適当なアドレスを2進化して見てみます... 『狐's バイナリエディタ 2.05』で適当なアドレスをコピーしてテキストエディタにペーストしてtmp1というファイル名でセーブします。
## foxbin.pl while(<>){ $len = length($_); for($i=0;$i<$len;$i+=2){ print(substr($_, $i, 2) . "\n"); } }
C:\home> perl foxbin.pl <tmp1 | bdfv >tmp2こうすると、2進化した擬似画像が見れます。
00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 10 ---#---- 10 ---#---- 10 ---#---- 10 ---#---- 10 ---#---- 10 ---#---- 00 -------- 00 -------- 10 ---#---- 10 ---#---- 00 -------- 00 -------- 00 -------- 28 --#-#--- 28 --#-#--- 50 -#-#---- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 00 -------- 28 --#-#--- 28 --#-#--- 7C -#####-- 28 --#-#--- 28 --#-#--- 28 --#-#--- 28 --#-#--- 28 --#-#--- 7C -#####-- 28 --#-#--- 28 --#-#--- 00 -------- 00 -------- 10 ---#---- 38 --###--- 54 -#-#-#-- 54 -#-#-#-- 30 --##---- 18 ---##--- 14 ---#-#-- 54 -#-#-#-- 54 -#-#-#-- 38 --###--- 10 ---#---- 00 -------- 00 -------- 24 --#--#-- 54 -#-#-#-- 58 -#-##--- 28 --#-#---0x20a0からのバイナリデータを2進的に表現したものです。 0x20a8から!のてっぺんが始まっていますね。
いっぽう、画像 (8KB)を拡大して見ると、「!」の上1pixelが空白ですね。すると、! は 0x20a7から始まっていると分かります。(この画像は、Windows95のMS-DOSプロンプトに「!」の文字を表示し、マウスを使って「選択」したときのものです)
同様に、半角カタカナは、読点(。)から始まっているので、それを画像 (5KB) で見ると、上9pixelがあいてます。読点の黒ピクセルは 0x2730 から始まっているので、それから 0x9 を引いて、0x2727 から読点のビットマップデータは始まっていることになります。
asciiというファイルの内容をペーストしたあとで、それに続けて 0x2727に kanaというファイルの内容をペーストして、APP932O.NEWというファイル名で保存します。(O は OMAKE のオーを意図しています)。これで、半角英数字に加え半角カタカナの字形データを書き換えたフォントファイルもできました。
WSP 1.50を使って、APP932.WINから APP932.NEW と APP932O.NEW というバイナリファイルを作るパッチファイルを作ります。APP932.WINは Windowsがもともと持っている APP932.FON をrenameしただけです。
WSPを使うなら、WUP2EXE (自己展開差分作成) と、 WSPST.COM Ver.1.0(WSP自己展開差分タイムスタンプ比較抑制ツール) もダウンロードしておきましょう。
C:\home\95knm13> wsp_e app932.win app932.new app932.WUP Making! 0.....10.....20.....30.....40.....50.....60.....70.....80.....90....100(%) ======================================================================= done! C:\home\95knm13> wup2exe -E app932 英語版自己アップデート形式のファイルを作成します. app932.EXE を作成しました. C:\home\95knm13> wspst app932.exe WSP自己展開差分タイムスタンプ比較抑制ツール WSPST.COM Ver.1.0 Copyright (C) 1995 by 毎黒仮節渡万 app932.exeのタイムスタンプ比較を抑制しました。 C:\home\95knm13>で、APP932.EXEができました。 同様に、
C:\home\95knm13> wsp_e app932.win app932o.new app932o.WUP Making! 0.....10.....20.....30.....40.....50.....60.....70.....80.....90....100(%) ======================================================================= done! C:\home\95knm13> wup2exe -E app932o 英語版自己アップデート形式のファイルを作成します. app932o.EXE を作成しました. C:\home\95knm13> wspst app932o.exe WSP自己展開差分タイムスタンプ比較抑制ツール WSPST.COM Ver.1.0 Copyright (C) 1995 by 毎黒仮節渡万 app932o.exeのタイムスタンプ比較を抑制しました。 C:\home\95knm13>とすれば、APP932O.EXEができます。
カレントディレクトリに APP932.FONをコピーしてきて、上で作ったEXEファイルで APP932.NEW というファイルに作り変えて、C:\WINDOS\FONTS に APP932.FONというファイル名で上書きしてくれるbatファイルです。INSTALL.BATというファイル名にしてあります。
: Windows95/98がインストールしてあるディレクトリを指定する set win_dir=c:\windows @echo off echo ** install 95knmfont ** : change attribute of app932.fon in order to copy %win_dir%\command\attrib -h -s %win_dir%\fonts\app932.fon : copy app932.fon with renaming copy %win_dir%\fonts\app932.fon app932.win : update app932.win to app932.new app932.exe : install font copy app932.new %win_dir%\fonts\app932.fon : change attribute of newfon %win_dir%\command\attrib +h +s %win_dir%\fonts\app932.fon : delete app932.new del app932.new : exit (または win) でWindowsにもどりましょう echo Please, type 'exit' or 'win'.
C:\WINDOWS> C:\WINDOWS> cd \home C:\HOME> cd 95knm13 C:\HOME\95KNM13> install C:\HOME\95KNM13>set win_dir=c:\windows C:\HOME\95KNM13> ** install 95knmfont ** 1個のファイルをコピーしました. WSP self update EXE 1.52 amapro Wakichi app932.win 95-10-03 00:00 => app932.new 00-10-16 11:28 Updating! Update complete! 1個のファイルをコピーしました. Please, type 'exit' or 'win'. C:\HOME\95KNM13> exitWindowsが再起動されます。 [スタート - プログラム - MS-DOSプロンプト]で、フォントの大きさ を「6 x 13」にして確かめてみましょう。