0

私は現在、 NekoVMがFreetype 2へのバインディングを作成するためのライブラリに取り組んでいます。これはプレーンな c で書かれており、ユーザーが「ü」、「Ä」、「ß」などの Unicode 文字を入力する場合を除いて、すべて非常にうまく機能します。それらは醜い正方形のような文字に変換されます。 あなたが使用している NekoVM からデータを受け取ると、. データを freetype にプッシュする関数 ( ) は、unsigned long as char コードを想定しています。(すべての文字は独自に処理されます。)
val_stringchar*FT_Load_Char

文字を正しくレンダリングするにはどうすればよいですか? また、C で記述されたライブラリに送信する前に、ISO-8859-XX コード ページに変換するオプションもあります。

4

2 に答える 2

3

解決策は非常に簡単でした:

for (i=0;i<l;i++) {
    unsigned long c = FT_Get_Char_Index(face,r[i]);
    FT_Load_Glyph(face,uc,FT_LOAD_RENDER);
    ....
}

これにより、freetype はそれ自体ですべての「エンコーディング要素」を処理できるようになります。

于 2009-10-12T18:18:42.430 に答える
3

小さな四角いボックスは、文字がフォントに含まれていないことを意味します。これは、次の 2 つのことを意味します。

  1. これらの文字を含むフォントを使用してください

  2. 正しいエンコーディングを使用してください。FT_CharMapおよびFT_Encodingを参照してください。

于 2009-10-06T11:31:06.703 に答える