Clean\Display\Campaign
Clean Display Campaign

----------- * -----------

能書きはめんどくさいので割愛。要するに、コンソールで作業したり、プログラムコードやスクリプトを書く場合、パスの区切り文字が「円」記号ではウザいと感じる、繊細な神経の人々を対象にしたキャンペーン。

ただし内容については無保証。しくじってOSが起動しなくなっても貴方自身の自己責任ということでよろしく。

記事の誤りについての指摘は大歓迎。shirata1992@mercury.ne.jp

旧くはDOS/Vという時代から、「バルタン星人のようなウザい記号をなんとか美しいバックスラッシュにできないものか」という問題意識は、ごく限定された領域において一般的に ずーっとあった。そのあとWindows 時代に入り、フォント構造が複雑になるにつれて、ウザい記号をバックスラッシュに置き換えるさまざまなテクニックやらパッチやらが開発されてきた。

で、Windows NT 4.0時代までは(FAT16で運用)、美しいバックスラッシュを堪能してきたのだが、Windows 2000にアップグレードしたときシステムフォントが入れ替えられてしまい、あのバルタン星人が復活したのだ。しかも今度はNTFSにしたのでOSを騙してフォントを操作しにくくなってしまった。

そこですこし時間のできた正月になんとかしようと、Webを探し回ったが、意外にも Windows 2000で無理やりバックスラッシュを実現しようという物好きな猛者はあまりいなくなっていたようだ。もう、みんな諦めたのかなぁ。

Example of path discription

このキャンペーンが遅くとも97年には開始されていたことを示す貴重な画像。この時代は、英語版 Windows 3.11 (Windows for Workgroups / マイクロソフトによっては日本語化されず)を裏技をつかって無理やり日本語化し、そこにMacで有名なChicagoフォントに似たTicagoフォントを使用して、仕事をしていた。ああ懐かしい大学院生時代。

----------- * -----------

基本文献集

結城浩のTips

まず、標準のフォント、FixedSys (vgafix.fon)では、ダイアログとかメモ帳とかの文字がでかすぎますよね。なんで14pなんていうでかさのものを使うんだろうか。ダサいじゃないか。というわけで、まず標準のフォントを小さくしましょう。でもNTFSのNT系では、素直にシステムフォントを置き換えさせてくれないので、とりあえず j13*.fon を手に入れましょう。Windows 3.1を持ってる人はいまほとんどいないと思います。日本語版 Windows 9x のCD-ROMを持っていれば、/win9x ディレクトリの mini*.cab のどこかに入っています。

システムフォントを小さくする方法

これまたシステムフォントを小さくする方法についての記事。こちらのほうが記述は親切。とくに、Windows NT 4.0 において、システムフォント・ファイルの名称を特定してくれていたので大いに助かりました。

バックスラッシュをきちんと表示しよう。

このページの師匠にあたるページ。NetNewsの fj.os.ms-windows で交わされていたバックスラッシュ表示テクニックに関する過去ログへのリンクがある。リンクされている記事はいずれも永久保存版だね。とくにこの記事を参考にして、バックスラッシュ・パッチのあたった msmincho.ttcとmsgothic.ttcを手に入れましょう。

Yen2BS フォントパッチ

上記のバックスラッシュ化パッチが置いてありました。あと、フォントのどこを書き替えればよいのかについての16進ダンプリストもありました...。 ああ、これを先に発見していれば、苦労しなくて済んだのに... (T_T)。(2003/1/16)

起動オプションに回復コンソールを追加する方法

Windows のシステムフォントはOSによってロックされているので起動中には手も足も出ない。ファイルシステムがFATの場合はDOSを起動して、ファイルを入れ替えることができたが、NTFSの場合はそういうこともできない。で、どうするかというと、Windows NT / 2000を二つ、一つのマシンに別々にインストールするか、あるいはこの「回復コンソール」を使うしかない。

回復コンソールでは、ファイルのロックをしない状態で、コマンドプロンプトだけを起動し、OS支配下のファイルの入れ替えや操作ができるようになる。これも導入しておいてください。

----------- * -----------

手順

1. まず基本文献を読んで、j13fix.fon, j13sys.fon, j13oem.fon を準備する。いずれも attrib -R -H -S をかけて、操作しやすい属性に変更しておいてください。

2. 次に基本文献に挙げられていた手順で、パッチのあたった msgothic.ttc と msmincho.ttc を準備する。私の場合、ディスプレイ表示では明朝を使わないので、msmincho.ttc は標準のもの、すなわち「円」記号が表示されるものを使っています。

3. c:\windows\fonts, c:\winnt\fonts 等のフォントが格納されているディレクトリに移動。当然、「不可視属性ファイルも表示する」状態にしておいてください。さらに コマンド・コンソール(以下、「コンソール」)を起動してフォント・ディレクトリに移動して、attrib -R -H -S *.*をかけて、全てのフォントファイルを操作可能な状態にしておきます。

4. さあ、まずパッチあて。上記のj13*.fon を使わない場合は、この記事を参考に、しましょう。もちろん、その記事で触れられているシステムフォントはロックされていますから、そのままではパッチは当たりません。該当フォントは、コンソールから copy c:\winnt\fonts\*.fon c:\patchedfonts とかやって、OSの支配下から取り出しておいてから、パッチを当てます。

5. j13*.fon については、パッチがありません。そこでバイナリ・エディタをつかってハンドパッチです。バイナリエディタは好きなものを使ってください。参考記事はこれ。バイナリエディタでj13*.fonを開いたら、検索機能をつかって、 00 44 44 28 28 7C 10 7C 10 10 00 という文字列がないか探してください。これが「円」記号です。これを 40 40 20 20 10 10 10 08 08 04 04 に置き換えれば、バックスラッシュになります。あとプログラマな人なら「0」「O」を区別するため「0」に斜め線を入れたりとか、「.」と「,」のみまちがえを減らすために、「,」のヒゲを伸ばしたりといろいろできますが、フォントの場所がどこだか見極める根性が必要になります。ある程度の根性があれば推測して探すことができます。

6. また、同様に、 41 41 22 22 14 14 3E 08 08 3E 08 08 08 という文字列を探します。これを 40 40 20 20 10 10 08 04 04 02 02 01 01 へと置き換えればOK。

7. 次に、入れ替えるフォントについてです。私は、英語版 Windows 2000を日本語環境で使うというヘンなことをしておりますので、一般的ではないかもしれませんが、ここまで付き合えるヲタな人であれば、推測して日本語 Windows 2000 でも同じようにバックスラッシュ化できるでしょう。

まず、vgaoem.fon は、下手にいじるとWindows 自体が起動しなくなりますので手をつけてはいけません。 私の印象ではこのフォントについては起動時に同一性チェックをかけているように思います。

FixedSys として使われ、ダイアログの表示に用いられるのが、vgafix.fon です。これに対応する小さなフォントが、j13fix.fon。パッチを当てたものを vgafixb.fon とでもリネームしておいてください。

Terminal として使われたり、コマンド・コンソールで使われるのが、app932.fon です。これはどうも vgaoem.fon を起動完了時に上書きするような感じでメモリにマップされるみたいです。app932b.fon とでもリネームしておいてください。徹底する人は、同様に、パッチの当たったファイルをすべて (hogehoge)b.fon とリネームして準備。

次に、msmincho.ttc / msgothic.ttcも同様に msmincho.ttb / msgothic.ttb とでもしておいて準備。

8. こんどは、cd c:\winnt\fonts などとフォント・ディレクトリに移動しまして、置き換える対象のファイルをバックアップします。たとえば、copy msmincho.ttc msmincho.org とか、copy app932.fon app932.org などと。これで最悪でももとの状態に戻せるようになります。

9. 準備したパッチ済みフォントファイルをコピーします。コンソールから、copy *b.fon *.ttb c:\winnt\fonts 等とやりまして、フォント・ディレトクトリにコピーしておきます。

10. リスタート。「回復コンソール」で起動しますと、 \winnt > なんていうプロンプトが出てくるはず。これで cd fonts で問題の場所に移動。

なぜパッチ済みフォントをフォント・ディレクトリに移動したかというと、回復コンソールは、Windows がインストールされているディレクトリ以下しか操作できないようになっているから。また、できることといえばせいぜい copy ren del 程度のものなので、あらかじめお膳立てしておく必要があるわけ。

11. ご想像のとおり、パッチ済みのたとえば app932b.fon を app932.fon に上書き。 copy app932b.fon app932.fon 等。私の環境では、j13fixb.fon を、vgafix.fon と jvgafix.fon に上書き、app932b.fon を app932.fon に上書き、msgothic.ttb を msgothic.ttc に上書き。

12. 再起動して、普通にWindowsが立ち上がれば成功。これで目障りな「円」記号にはほとんどお目にかからず済む状態になります。私は、ほとんどのアプリの標準フォントをFixedSysかTerminalにしているもので。

失敗した場合は、もう一度、回復コンソールで起動して、上書きしたフォントのオリジナルでさらに上書きし、もとにもどします。 たとえば、copy jvgafix.org jvgafix.fon 等。

13. スクリーンフォントは書き換えても印刷結果に影響しませんが、msmincho msgothicを書き換えた場合は、印刷結果にも影響するはずです。半角の「円」記号を印刷する必要があるひとは、これらのファイルについては手をつけないほうが無難かもしれません。

それでは、成功を祈る!

----------- * -----------

to Hideaki's Home