
TWのフォントの話
こんばんわ! なーんてやけにテンションの高そうなノリで書き始めてみたわけですが、気がついたら1週間ぶりですね。
暇なのでふらふらとTalesWeaver関係のページを漁ってたりするわけですが、適当にLinkをたどっていこうとすると意外とこのサイトにリンク張られてたりするんですよね。どこからここのサイトを探してくるんだろう……とか。って言っても、まだ韓国OpenBetaなゲームなわけで、なんとかrokOnlineと違ってコミュニティもかなーり狭いわけで、ナルヴィクの街で放置しておいたら(長時間AFKはノーマナーですかそうですか)目の前をどこかのサイトで見かけた名前のキャラがはしってったりしてね。
そんなわけで、ROはチケットが切れ、Talesも大したやらずにプログラムばっかり書き殴る日々が続いてるんです。たぶん、実家に帰るとまたゲームばっかりやる日々になると思うんで、その時までちょっとかける所までプログラムを書いておこうかなぁ、と。ってか、明日にはもう実家なわけですが。
ぼちぼちここのサイトでばらまいてるJ2Kのコードページ変換のやつも手をつけますです。一応、半角カナをめぐる問題が思った以上にクリティカルだということが判明してみたんですが、そのほかに韓国文字コードにない感じがでてきたときに代替の漢字を外部ファイルから指定できるようにしようかという計画もあります。
んで、正宗さんがMitsukiさんに振ったTWの文字が小さい話ですが、私のところにも振られちゃったのでサクッと経過を書いておきます。
-
WinXPでTWやったら文字小さいじゃないかー。これ、CreateFont乗っ取りして直らないかなぁ。ってことで、他のOSでの様子を探ってみると、Win2K,XPでは文字が小さいけどWin98とかではそうはならないみたい
-
ってことは、多言語対応のWindowsNT系だとCreateFontの引数がさしあたり韓国語のフォントフェイス名で渡されて、日本語コードページで半角カナに化けたんだろうなぁ
-
とか思ってたらMitsukiさんとこでFontPatch(既にobsoleteなやつ)を配布開始。元のDLLとDiffとってみたらGulimCheの韓国語名のところがGulimに書き変わってるだけだったみたい(バッファがNULL含めて8バイトだからGulimCheまで入らなかった、と)なので、ここまでの予想はあってたわけだ
-
で、CreateFontでも乗っ取ろうかと思いつつ、レポートに激ハマりしてる間にTWHelperが出てたりして、プログラム的に書き換えることを追求する意味が無くなった(すいませんすいません、技術力が足りなくてできなかったんですっ)ので、レジストリから攻めてみることに。
って感じでして、結局TWはCreateFontでGulimCheとDotumCheを作ってるって事で、これの韓国名が日本語に化けた半角カナを HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes(WinNT系のみしかこのキーはありません) でGulimCheとDotumCheに読み替えるように設定。これでOKです。ちなみに、GulimCheが丸っこいフォントで、DotumCheが角張ったフォントです。
-
キー名:アシクイテシで、文字列値:GulimChe
-
キー名:オクソシで、文字列値:DotumChe
で前述の場所にキーを作れば外部プログラムで力技を行使せずとも行けるはずです。すくなくとも、私は行ってます。
まぁ、CreateRemoteThreadとかでTWにフォントオブジェクトハンドルを監視して置き換えさせるスパイスレッドを送り込んでもいいんですけど、そんなにそんなに外部ツールばっかりに頼るのもなんだよなぁーとか思ったりしたわけです、ってことで。ホントはプログラム的に指定のコードページベースでアプリケーションを動かすAPIでもあるんだろうとか思ってたんですが、見つからず…(SetConsoleCPとか_setmbcpとかぐらいしか?)
ちなみに、なぜフォントが見つからなかったときに思ったよりも小さいサイズでフォントが作られるのかは、私も分からないでーす。