某些Unicode字符未显示

时间:2016-01-10 19:46:04

标签: c# text unicode symbols

我试图从我的程序中的窗口复制(不是一个精确的副本)CharMap程序,用于插入和添加符号。问题是这些符号适用于装有Windows 7,8 10的机器,但某些符号在Windows XP上不会显示。

Windows XP

Windows XP

Windows 7,8,10

enter image description here

我目前正在使用以下内容生成符号:

public static string CharToHex(char c)
{
   return ((ushort)c).ToString("X4");
}

string x = CharToHex(Convert.ToChar(defaultSymbolsCollection[i]));
int value = int.Parse(x, System.Globalization.NumberStyles.HexNumber);
string symbol = char.ConvertFromUtf32(value).ToString();
AddSymbol(Convert.ToString((char)value);


Void AddSymbol(string _symbolText)
{
   Button symbolButton = new Button()
   {
      Text = _symbolText,
      Size = new Size(32, 32),
      Font = new Font("Arial Unicode MS", 9),
      Tag = _symbolText,
      UseMnemonic = false,
   };

   symbolButton.Click += SymbolButton_Click;
   pnl_SymbolHolder.Controls.Add(symbolButton);
}

这最终仅适用于Windows 7,8,10但不适用于Windows XP。一些符号不显示,而是用正方形表示而其他符号表示。

我该如何解决这个问题?我的另一个选择是在按钮的中心绘制符号,因为它总是在那里,因为它被绘制但我希望看到其他替代方案,也许是解决这个问题的方法

1 个答案:

答案 0 :(得分:1)

字体“Arial Unicode MS”不包含在Windows XP / 7/8/10中,但包含在some Microsoft Office products中。 Windows XP很可能使用“Tahoma”(默认UI字体),does not包含这些符号的字形(而“Segoe UI”是Windows 7/8/10上的默认UI字体,{{3} })。

要使字符正确显示,您需要查找/安装/使用包含这些字符字形的字体。