cocos2d-xとTrueTypeフォントとレンダラーとUTF8と絵文字の苦悶
cocos2d-xではver3系から、FreeTypeによるレンダリングとOSによるレンダリングが選べるようになりました。
iOSのレンダラーの場合、フォントにグリフが無いときは代替のフォントで補ってくれます。FreeTypeでは現状、その辺の処理はやってくれません。なので、カッコイイフォントを見つけてきていざ使おうとすると、絵文字が出ない! …なんてことが起こり得ます。
ではOSに任せるのがベストかというと、OSによってフォントの描画結果が違うというのがネックになってきます。また、Androidでは、TTFの描画がやや遅かったりします。
この辺を解消したい場合、一つの解決策は、FontForgeなどを使って、TTFファイルに自分で絵文字などを追加することでしょうか。
そうすると今度は、絵文字のデータはどっから用意するんだよ?という話になるのですが、googleのnoto ( https://www.google.com/get/noto/ ) や twitterのtwemoji ( https://github.com/twitter/twemoji ) がオープンソースで公開されています。
同様にUTF8を駆使した顔文字 ( o̖⸜((̵̵́ ̆͒͟˚̩̭ ̆͒)̵̵̀)⸝o̗ とか…)のためにUTF8のグリフをTTFファイルにどんどん足すぜ〜!といきたいのですが、TTFは現在の仕様では65,535グリフまでしか入れられません。
UTF8はすでにこれ以上の文字を定義しており…残念ながら1ファイルでUTF8をコンプリートするTTFファイルは作ることができないのでした。無念!