FA ぽぽるの言語コードをまともにしてみるパッチ


つーことで、文字ばっかのうざってーページです。 TTFに詳しくなりたい気がしている人は読んでみるといいかもしれません。 それ以外の人は読まなくていいです。とばしちゃってよ。

☆序章!! FA ぽぽる((C)NEC)っていいですよね。
小さくしても見やすいので、プログラムとか組むときや、メールを読むときに使ってます。 だけど、初期のやつはNT 4.0 SP4以前とWindows2000で使おうとすると、 キリル言語だのハングルだのが出てきて、肝心の日本語が出てこなくて使えなかったりします。 Windows2000をマジで使うようになってきたいま、これが使えないのはかなり痛いのですよ。 で、おそらくバイナリでちーとばっかり書き換えればいけるかなぁと研究してみたのです。ヽ(´ー`)ノ

☆第一章!! 困ったときはごーやほー。まずインタネでTureTypeのファイル構造を調べようよ。
でも全然構造を扱ったところなんてなかった。 こんなこと調べるのはどうせ俺ぐらいのもんだよ。ああそうさ。(;´д`)
じゃ、次。

☆第二章!! 仕方がないからフォント関係のソフトをあさろうよ。
で、とりあえずソフトと言えばクズソフトいっぱいのベクター。 クズの中にたまに光っているソフトを見つけるのが大変だよね〜 ということで、ユーティリティを必死に探してみる。どれもこれも似たようなモノばかりで、 フォントをいじるようなソフトはまったくなかったよ。(;´д`)  やっぱりダメだねベクター。使えないよ。(;´д`)
まあフォントの情報表示系で、結構詳しく出してくるやつはあったので、その辺だけはキープしておく。

ベクター/フォント用ユーティリティ
とりあえずあさるとなんか出てくるかも。

TTModify
TTF/TTCの内部構造(アドレスとか)をがんがん吐いてくれる。 今後はいろいろ編集できるようにするみたい。

FntInfo
こいつも内部情報を細かく吐いてくれるツール。どんな情報があるのかを知るのに役に立ったと思う。

とりあえず次。

☆第三章!! やっぱり仕様書が欲しいよ(;´д`)
なにをやってもらちがあかず、フォントエディタなんかにも手を出してみたが、 フォントアベニュー系は特殊フォントらしくて綺麗じゃない。 で、悩みまくっているとFntInfoに謎のアドレスがリンクしてあることに気づく。 MSのサイトなんだが、どうやらTrueTypeに関していろいろ書いてあるらしい。 とりあえず日本サイトらしいのがあったんだが、すでになくなっていた模様。 仕方がないので英語サイト。ファイル構造とかあるっぽいけど、全部英語だよ。(;´д`)

Microsoft Typography
TrueTypeについて熱く語っている模様。英語嫌い。(;´д`)

英語はわからんので放置。次。(;´д`)

☆第四章!! 結局英語を読むはめになるのさ。(;´д`)
しょうがないんだよ。他に資料はないのさ。英語翻訳ソフトにでもかけてやろうかと思ったが、 インストールするのが面倒なのでつたない英語力で必死で読んだよ。
TTF/TTCの内部構造はWAVEとかと同じようにタグ〜サイズ〜データみたいになっているみたい。 先頭付近にタグっぽい(cmapだのOS/2だのがあるから見てみ)のがあるよ。 で、とりあえず言語だから、マニュアルをJapanあたりで検索かけてみる。 あったあった。どうやらOS/2タグ付近にその情報があるみたい。 ここで役に立つのがTTModifyね。OS/2タグのアドレスをさっと調べられるからとても便利。 あとはバイナリエディタにTTCぶちこんで、調べたアドレスへジャンプ。 なんかNECとか書いてあるあたりに当たると思う。 とりあえずここにはいろんなことが書いてあるんだけど、読むべき部分はNEC(これはベンダ名だね。 ちなみに4バイトとってあるみたいなので、FAの場合はNEC(0)のあとになる。)のあとのあたり。 ベンダ名からはSHORT(2バイト)が8個つながってあとの部分、16バイトあとの8バイト
ulCodePageRange1 Bits 0-31
ulCodePageRange2 Bits 32-63

が今回の求めるべきアドレスである。ここに入る値で、フォントの中身の言語が変わってくるのです。
とりあえず表にしてみたよ。元はバリバリ英語だけど、わかりそうな部分だけ適当に日本語にしてみた。
ビットコード言語
01252ラテン語1
11250ラテン語2: 東ヨーロッパ
21251キリル語
31253Greek
41254Turkish
51255ヘブライ語
61256アラビア語
71257Windows Baltic
8-15予約 Alternate ANSI
16874タイ語
17932日本語
18936中国語: 簡体字 --PRC/シンガポール
19949韓国語(Wansung)
20950中国語: 繁体字 --台湾/香港
211361Korean Johab
22-28Reserved for Alternate ANSI & OEM
29Macintoshキャラセット(US Roman)
30OEMキャラセット
31シンボルキャラセット
32-47Reserved for OEM
48869IBM Greek
49866MS-DOS ロシア
50865MS-DOS ノルディック
51864アラビア語
52863MS-DOS カナダ/フランス
53862ヘブライ語
54861MS-DOS Icelandic
55860MS-DOS Portuguese
56857IBM Turkish
57855IBM キリル; primarily Russian
58852ラテン語2
59775MS-DOS Baltic
60737Greek; former 437 G
61708アラビア語(ASMO 708)
62850WE/ラテン語1
63437英語
元々ここに入っていたモノは00 DC 00 24だから、
0000 0000 1101 1100 0000 0000 0010 0100
となり、2ビットのキリル語・5ビットのヘブライ語・18ビットの簡体字中国語・19ビットの韓国語・ 20ビットの繁体字中国語(22/23ビットは予約)となります。 日本語だけあれば問題がないので、17ビットだけフラグをたてましょう。
0000 0000 0000 0010 0000 0000 0000 0000
結果は00 02 00 00となります。これがプロポーショナルと等幅の分の2箇所あるので書き換えます。 これで日本語だけ使用可能になります。

☆第五章!! うんちくはいいからさ、結局どこを書き換えるのよ?
ということで見慣れた感じの形式で。 バイナリエディタででも適当に書き換えてくれよ。
*PATCH for FA-Poporu Japanese Patch
FILENAME FANGOT5.TTC
0030E3C3: DC 02
0030E3C5: 24 00
0059D316: DC 02
0059D318: 24 00
1996/01/16 13:40:02版のパッチです。それ以外は知りません。 この日付以外だったら、とりあえずNECで検索かけて、それっぽいところを書き換えればできるでしょ。

☆注意
当然、この文章の通りにやったけどうまくいかない。おまけに変になったと言われても、 こっちは全然知らないのであしからず。自己責任でってやつな。お約束だからわかるよな。

☆履歴
初版 とりあえず書いてみる。ヽ(´ー`)ノ

戻る