これまで、フォントのレンダリングにテクスチャ(bitmapfont)を使用していましたが、freetype2を機能させようとしています。私の文字列はすべてSHIFT_JISでエンコードされており、私の唯一の問題は、フリータイプから適切なSHIFT_JISビットシーケンスに正しいグリフを取得することです。でも思ったより難しいようです。たとえば、「亜」の文字コードは「0x889F」です(バイト1は136に設定され、バイト2は159に設定されています)。これは、SHIFT_JISエンコーディングに準拠しています。だから私は関数を呼び出しました:
FT_Select_Charmap(face, FT_ENCODING_SJIS);
次に、その文字コードを使用してグリフをロードしてみます。
FT_Load_Char(face, 0x889F, FT_LOAD_RENDER );
しかし、ランダムなグリフを受け取ります。同じ結果ですでに異なるフォントを試したので、フォント固有の問題になることはありません(そして、そうです、それらはshift-jis charmapを提供します)。たとえば、「0」(ゼロ)は位置0x0030にあるはずですが、実際には0x002Dにあります。すべての文字が3の定数オフセットを持っているわけではありません。そうでなければ、問題はありません...私の「FT_Load_Char」呼び出しは、間違った方法でcharcodeパラメーターを渡していると思いますが、それがどのように正しいかは推測できません。すでに試しました:
FT_Load_Char(face, FT_Get_Char_Index(face, 0x889F), FT_LOAD_RENDER );
しかし、その後、別のランダムなグリフを受け取ります。では、デフォルトのcharmapが選択されていない場合、どうすればcharcodeをFT_Load_Charに渡すことができますか?
どんなアドバイスも本当に役に立ちます。ありがとうございました。