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);
}
}