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

yasuokaの日記: Appleカラー絵文字フォントの「sbix」

日記 by yasuoka

現時点でのAppleカラー絵文字フォントは、フォーマット上はttfでありながら、「glyf」テーブルに絵文字を含んでおらず、代わりにアヤシゲな「sbix」というテーブルを含んでいる。この「sbix」のフォーマットは、今のところ公開されてないみたいなので、私(安岡孝一)の推測をここにメモっておく。

  • ULONG version (たぶんsbixのバージョン、現状では0x00010001)
  • ULONG numImageTables (画像テーブルの個数)
  • ULONG OffsetTable[numImageTables] (各画像テーブルへのオフセット)

各画像テーブルは、以下のようなフォーマットになっているようだ。

  • USHORT height (画像の高さ(ピクセル数))
  • USHORT DPI (現状では0x0048すなわち72dpi)
  • ULONG ImageOffset[numGlyphs+1] (各画像データへのオフセット)
  • VARIABLE imagedata

numGlyphsは「maxp」テーブルから取ってくることになる。画像の幅は書かれておらず、正方形の画像しか許されていないのか、それとも画像を出力する時にデータ内から「見切る」のか、正直なところ謎だ。また、各画像データの長さも書かれていないので、直後のImageOffsetとの差で求めることになる。ちなみに、現状の各imagedataは、最初の4バイトが0x00000000、次の4バイトが「0x706e6720」(png )で、その直後からPNG画像そのものが入っている。

なお、「cmap」テーブルや「morx」テーブルに関しては従来どおりなので、UnicodeからglyphIDへの変換や、リガチャのglyphIDへの変換は、従来のプログラムが使える。ただ、こんな「sbix」なんていう新しいテーブルを作るくらいなら、なぜ従来の「EBLC」テーブルのcolorRefを拡張する方向で設計しなかったのか、返す返すも残念と言わざるを得ない。

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...