0

GlyphTypeface の CharacterToGlyphMap を使用します

http://msdn.microsoft.com/en-us/library/ms635034.aspx

任意のフォントに含まれるすべての文字を取得します。たとえば、 Arialを使用する場合はすべて正しいのですが、一部のフォントでは間違ったコード ポイントが取得されます。

たとえば、Ebrimaの場合、Unicode の範囲を超えるコード ポイントがいくつかあります。Ebrima フォントの最後の文字は 16 進数: FD3F (10 進数: 64831) ですが、CharacterToGlyphMap にはいくつかの追加の値が含まれています (10 進数: 66688、66689、66690...)。上記の例の間違ったコードポイントの理由は何ですか?

編集:

独自の文字マップを実装すると、いくつかのフォントでアプリケーションがクラッシュします。

Convert.ToChar(unicodeCodePoint)

この問題の解決策は、文字の使用を制限することです (@AakashM に感謝します)。

foreach (KeyValuePair<int, ushort> item in glyphTypeface.CharacterToGlyphMap)
{
   if (item.Key >= Char.MinValue && item.Key <= Char.MaxValue)
   {
      limitedCharacterMap.Add(item.Key, item.Value);
   }
}
4

0 に答える 0