2013年8月15日木曜日

SDL 日本語フォント

SDLではTTF(TrueTypeFont)を使用することができる。
これを使用して日本語フォントを表示する。
SDL_ttf.dllをプロジェクトと同じフォルダにおいてライブラリとリンクさせておこう。

具体的な使用法はこのサイトがわかりやすい。
http://utsukemononi.gozaru.jp/gc/sdl/page008.html

ただ、サイトにもあるように、読み込む時にSJISからの変換が必要になる。
MultiByteToWideCharとWideCharToMultiByteを使えば変換ができそうだ。

//-----------------------------------------------------------------------------

char* src = "日本語フォント"
char dst[64];

// UTF16のサイズを取得する
int size = ::MultiByteToWideChar( CP_ACP, 0, (LPCSTR)src, -1, NULL, 0 );

// ShiftJISからUTF-16へ変換
BYTE* buffer16 = new BYTE[ size * 2 + 2 ];
::MultiByteToWideChar( CP_ACP, 0, (LPCSTR)src, -1, (LPWSTR)buffer16, size );

// UTF8のサイズを取得する
size = ::WideCharToMultiByte( CP_UTF8, 0, (LPCWSTR)buffer16, -1, NULL, 0, NULL, NULL );

// utf8に変換する
::WideCharToMultiByte( CP_UTF8, 0, (LPCWSTR)buffer16, -1, (LPSTR)dst, size, NULL, NULL );

//-----------------------------------------------------------------------------

大体こんな感じで変換したバッファを渡したらちゃんと日本語で表示された。

0 件のコメント:

コメントを投稿