Windows 8.1でカラー絵文字を表示するサンプルでTranslateColorGlyphRunを使ってグリフベースで書く方法が存在してないのでサンプルを書いた。
適当に書いたものなので動かないとは思うけど、使い方は参考になるはず。というか、Microsoft、TranslateColorGlyphRunを使ったサンプルくらい公開してよ。
2014-03-10
2014-03-07
emoji hell
絵文字は昔Emoticonsとか言ってたのにいつの間に世界標準語でemojiと呼ばれるようになったんだが、このフォント仕様のカオスさが面白い。たまに調べることがあるので自分用にまとめてみた。
現在主流のプラットフォームだと大体はカラー絵文字をサポートしてるのだが、すべてでサポートする仕様が異なる。どのプラットフォームもOpenTypeに新しいテーブルを追加することでサポートするようになってる。
http://opentype.info/blog/2013/07/03/color-emoji-in-windows-8-1-the-future-of-color-fonts/
ただしカラー絵文字を描画するには、DirectWriteのID2D1RenderTarget::DrawTextまたは、ID2D1RenderTarget::DrawTextLayout必須 (えっDrawGlyphRunではサポートしないの?) なため、IE11でもサポートされず。
なお、Glyphベースで描画するには、DWRITE_COLOR_GLYPH_RUN使えばいいらしいが。
http://typographica.org/typeface-reviews/apple-color-emoji/
10.7から追加されたCTFontDrawGlyphsを使うことで描画可能。CGContextShowGlyphsWithAdvancesの使用からCTFontDrawGlyphsに変えることで対応可能。
https://color-emoji.googlecode.com/git/specification/v1.html
ただし、FreeType 2.5でサポートが入ってるため (from Google)、FreeTypeでレンダリングするようなアプリだとOS問わずサポート可能 (ビルドオプションの変更は必要)
現在主流のプラットフォームだと大体はカラー絵文字をサポートしてるのだが、すべてでサポートする仕様が異なる。どのプラットフォームもOpenTypeに新しいテーブルを追加することでサポートするようになってる。
Windows 8.1
COLRテーブルとCPALテーブルを利用。http://opentype.info/blog/2013/07/03/color-emoji-in-windows-8-1-the-future-of-color-fonts/
ただしカラー絵文字を描画するには、DirectWriteのID2D1RenderTarget::DrawTextまたは、ID2D1RenderTarget::DrawTextLayout必須 (えっDrawGlyphRunではサポートしないの?) なため、IE11でもサポートされず。
なお、Glyphベースで描画するには、DWRITE_COLOR_GLYPH_RUN使えばいいらしいが。
Apple iOS / OSX 10.7
sbixテーブルを利用。そのままPNGが入ってるhttp://typographica.org/typeface-reviews/apple-color-emoji/
10.7から追加されたCTFontDrawGlyphsを使うことで描画可能。CGContextShowGlyphsWithAdvancesの使用からCTFontDrawGlyphsに変えることで対応可能。
Google Android
CBDTテーブルとCBLCテーブルを利用。PNGとか非圧縮のビットマップが格納可能https://color-emoji.googlecode.com/git/specification/v1.html
ただし、FreeType 2.5でサポートが入ってるため (from Google)、FreeTypeでレンダリングするようなアプリだとOS問わずサポート可能 (ビルドオプションの変更は必要)
登録:
投稿 (Atom)