お世話になっております。テキスト描画周りで機能追加の要望があるためスレッドを立てさせていただきました。
題名に書いた通りですが、DrawString系関数をIVS(漢字異体字シーケンス)に対応していただけないでしょうか。
現在制作中のプログラムで「葛󠄀󠄀」(下部がヒの字になっている旧字形の葛)の字を描画したい場面があるのですが、
こちらの漢字は2004年にJIS例示字形が改定された影響で、そのまま文章を入力すると新字形になってしまいます。
この問題への対策として、現在はIVS異体字セレクタが多く用いられています。
先ほどの「葛」の字の場合、文字の直後に異体字セレクタ(U+E0100)を入力することで、字形変更前の文字を表示できるようになります。
新字形:U+845B
旧字形:U+845B + U+E0100
新字形(明示):U+845B + U+E0101
3.21b時点ではこの異体字セレクタに対応しておらず、異体字セレクタを含めた状態でも新字形で描画されます。
以下サンプルコードです(VSのプロジェクト設定でUnicode文字セットを使用する必要があります)
----- コード開始 -----
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
ChangeWindowMode(TRUE);
DxLib_Init();
int fontHandle = CreateFontToHandle(_T("Meiryo"), 32, 0, DX_FONTTYPE_ANTIALIASING_4X4);
TCHAR noivs[] = _T("葛"); // 異体字セレクタなし(新字形)
TCHAR ivs[] = _T("葛󠄀"); // 異体字セレクタあり(旧字形)
DrawStringToHandle(0, 0, noivs, GetColor(0xFF, 0xFF, 0xFF), fontHandle);
DrawStringToHandle(0, 32, ivs, GetColor(0xFF, 0xFF, 0xFF), fontHandle);
WaitKey();
DxLib_End();
return 0;
}
----- コード終了 -----