パスワードを忘れた? アカウント作成
451239 journal

route99の日記: TTFのハックを試みる。 2

日記 by route99

OpenTypeやTrueTypeのフォントファイルOTF、TTF、TTCをパーズするプログラムを書いてみた。仕様自体はMicrosoftやAppleのサイトにあるので書くことはできるが、実際のファイルの多くが仕様どおりでないことには驚いた。

TTFはテーブルがいくつも繋がっているもので、テーブルのメタデータにはチェックサムが書いてあるのだがファイルによってそのチェックサムの計算がまちまちだったりする。たとえば、headテーブルのあるフィールドは最初0にしてチェックサムを計算し、あとからほんとうの値をいれる。つまりチェックサムでチェックするにはそのフィールドを0として読みこんで計算する。であるが、ダイナラブのフォントはあとからチェックサムを計算していた。

TTFのテーブルはかなり抽象度の高い部分なのであるがそれでも仕様どおりでない。まして個々のテーブルの内容はひどいものだ。nameテーブルからフォントの名前を取りだすだけでも一苦労である。

ほんとうはパーズよりも書き込みを作りたいのだがどうしようか。。。とりあえずfreetypeが読む部分だけまともに作ろうかな。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by yasusii (125) on 2002年02月07日 10時09分 (#60533) ホームページ
    TTX [letterror.com]なんていかがっすか?
    • by route99 (7593) on 2002年02月09日 18時56分 (#61218) 日記
      ありがとうございます。

      これはPythonなんですね。
      でもttLib/tables/のやり方は見やすくてよさげですね。

      あ、でも_n_a_m_e.pyのdecompileメソッドにある
         
          name.string = stringData[name.offset:name.offset+name.length]

      だとたぶんだめっぽいです。
      # ファイル中の name.length がうそっぽいから。
      親コメント
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...