0

我使用 GlyphTypeface 中的 CharacterToGlyphMap

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

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

例如对于Ebrima,我得到了一些超出 Unicode 范围的代码点。Ebrima 字体中的最后一个字符是十六进制:FD3F (dec: 64831),但 CharacterToGlyphMap 包含一些附加值,例如 (dec: 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