前回(Windows 8.1は絵文字がカラー表示になる)に引き続き、Direct2Dでのカラーフォント描画を試してみました。Direct2Dならストアアプリ・デスクトップアプリ問わず使用できるはずです。

Windows 8.1でDirect2Dを使い絵文字のカラー表示を行った様子(スクリーンショット)

D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONTという新しく追加された定数をID2D1RenderTarget::DrawText関数で指定すると、カラー表示になります。おそらく、DrawTextLayoutなどでも同様に使用できると思います。

static const WCHAR Text[] = L"……";
 
auto size = renderTarget->GetSize();
renderTarget->DrawText(Text, ARRAYSIZE(Text) - 1,
  textFormat,
  D2D1_RECT_F{0, 0, size.width, size.height},
  blackBrush,
  D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT);

ソースコード全体はgist: egtra / d2d-color-font.cppに置いてあります。このコードでは\U+xxxxxxxx表記で文字を指定していますが、ソースファイルがUTF-8なら絵文字を直接書いても大丈夫です。少なくとも、Visual C++ 2013 Previewではうまくいきました。

スポンサード リンク

この記事のカテゴリ

  • ⇒ カラー絵文字(Direct2D編)
  • ⇒ カラー絵文字(Direct2D編)