フォントが欲しい話#5

とにかく既存のフォントエディタでは自由にならないことを自由にしたいだけなのだが、
既存のフォントエディタで加工した後に、気にくわないところだけちょこっといじりたいということで、
まずはフォントファイルの仕様みたいな物を探して読んでたら、目は疲れるし腰は痛いし、
健康上の理由でそういうツールは作れないという結末が見えてきた。

正直なところ最近は、フォントの仕様が英語で書かれた物を読むより、
フォントを扱うDelphi製ソフトのソースがあってくれた方が助かるってくらい英語がつらい。
で、
http://osakattf.hp.infoseek.co.jp/
これのリンク先にある、TTFGASPってのが突破口になって、いろいろ理解できた。
体がつらくて何も作らないかも知れないので、理解できたことだけ書いておこう。

フォントの仕様は、全部読まなきゃ理解できないようだ。
http://developer.apple.com/fonts/TTRefMan/RM06/Chap6.html
だけど、これの読み進め方がわかって氷が溶けたような、まぁ氷解でいいけど。
まず、どのフォントでもおきまりの12バイトがある。
バージョン(4バイト)、テーブル数(2バイト)、まだよくわからん(6バイト)って感じだ。
次にテーブル名とアドレスと長さとチェックサムで4バイトずつの計16バイトのテーブル情報が、
先に出てきたテーブルの数だけ登場する。
それ以降は、テーブル情報に書かれたアドレスにテーブルがあるだけ。
たとえば前述のTTFGASPはgaspというテーブルを変更するツールで、
gaspはどのサイズの時にビットマップを表示するとかを書いてある場所らしい。(たぶん)
でも例の切り出しフォントのgaspを適切に変更しても、やっぱりビットマップが表示出来なくて謎。
ほかに、cmapをいじればそのフォントが何語なのかを変更できそうとか、
OS/2をいじれば等幅かそうでないかを変更できそうとか、その辺はこれに書いてあった。
http://fontforge.sourceforge.net/ja/TrueOpenTables.html

でだ、ちまちまと読み進めつつ、テキトーなフォントで中身を確認しつつ、
人間がバイナリエディタで追いかけることが出来てるんだから、
追いかけてどういう内容かを人間様に示せるツールも作れて当たり前な状態なんだよ。
もちろんそれが出来るなら、FontForgeで作ったフォントの自由にならなかった部分を、
書き換えて好きに出来るツールだって作れて当たり前って事になるわけだ。
本当はファイルを扱うソフトはユニコードを意識しなくていいC♯でやりたい。
テキストエディタと違って速度にこだわる必要もないし、
類似ソフトとかがないから動作に強いこだわりもなく、とにかくフォントがいじれればいいので、
楽にプログラミングできるC♯で行けそうなジャンルだ。
でも、フォントファイルの中に書いてあるアドレスを構造体に読み込むっていう作業だから、
ポインタ的なことが出来ないC♯ではやりにくいってことで、
どうしてもまたDelphiでやることになるんだろうな。
TTFGASPっていうお手本もあるわけだから、やりやすいと言えばやりやすいのだが。

ところで、フォントも欲しいがメタスとガザCも欲しい。
パラスアテネは箱だけ見て、買うほどではないって気がした。

B000EGD458
B000EGD458

たぶん関連のある記事:

コメントは終了しています。