我试图从我的程序中的窗口复制(不是一个精确的副本)CharMap程序,用于插入和添加符号。问题是这些符号适用于装有Windows 7,8 10的机器,但某些符号在Windows XP上不会显示。
Windows XP
Windows 7,8,10
我目前正在使用以下内容生成符号:
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。一些符号不显示,而是用正方形表示而其他符号表示。
我该如何解决这个问题?我的另一个选择是在按钮的中心绘制符号,因为它总是在那里,因为它被绘制但我希望看到其他替代方案,也许是解决这个问题的方法
答案 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} })。
要使字符正确显示,您需要查找/安装/使用包含这些字符字形的字体。