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を拡張する方向で設計しなかったのか、返す返すも残念と言わざるを得ない。
Appleカラー絵文字フォントの「sbix」 More ログイン