对于某些字体,c#-CharacterToGlyphMap包含错误的Unicode代码点

对于某些字体,c#-CharacterToGlyphMap包含错误的Unicode代码点,c#,C#,我使用字形字体的CharacterToGlyphMap 获取任何字体中包含的所有字符。如果我使用例如Arial,一切都是正确的,但对于某些字体,我得到了错误的代码点 例如,对于Ebrima,我得到了一些超出Unicode范围的代码点。Ebrima字体中的最后一个字符是hex:FD3F(dec:64831),但CharacterToGlyphMap包含一些附加值,例如(dec:66688、66689、66690…)。对于上述示例,错误代码点的原因可能是什么 编辑: 我实现了自己的字符映射,对于某

我使用字形字体的CharacterToGlyphMap

获取任何字体中包含的所有字符。如果我使用例如Arial,一切都是正确的,但对于某些字体,我得到了错误的代码点

例如,对于Ebrima,我得到了一些超出Unicode范围的代码点。Ebrima字体中的最后一个字符是hex:FD3F(dec:64831),但CharacterToGlyphMap包含一些附加值,例如(dec:66688、66689、66690…)。对于上述示例,错误代码点的原因可能是什么

编辑:

我实现了自己的字符映射,对于某些字体,我的应用程序崩溃,因为我使用

Convert.ToChar(unicodeCodePoint)
这个问题的解决方案是限制字符的使用(感谢@AakashM),例如

foreach(glyphTypeface.CharacterToGlyphMap中的KeyValuePair项)
{

如果(item.Key>=Char.MinValue&&item.Key“Ebrima字体中的最后一个字符是hex:FD3F”这句话的来源是什么?(请注意)“超出Unicode范围”是什么意思?Unicode不会停留在U+FFFF上。我创建了字符映射,因此基于内置窗口。感谢您的回复AakashM。Sebastian Negraszus您是对的,我的错误。@rgb添加一个解释您所做的事情和所看到的事情的答案,这可能会对将来的人有所帮助。
foreach (KeyValuePair<int, ushort> item in glyphTypeface.CharacterToGlyphMap)
{
   if (item.Key >= Char.MinValue && item.Key <= Char.MaxValue)
   {
      limitedCharacterMap.Add(item.Key, item.Value);
   }
}