2016-01-10 47 views
1

我試圖從我的程序中用於插入和添加符號的窗口中的CharMap程序複製(而不是一個確切的副本)。問題在於這些符號可以在Windows 7,8,10的機器上運行,但某些符號不會在Windows XP上顯示。一些Unicode字符沒有出現

的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上運行。一些符號不顯示,而是由一個正方形表示,而其他符號則表示。

我該如何解決這個問題?我的另一種選擇是在按鈕的中心繪製符號,它總是在那裏,不管是因爲它被繪製,但我希望看到其他替代方案,可能是對這個問題的解決方案

+0

您的代碼示例將按鈕文本設置爲未在代碼中定義的_symbolText? – stuartd

+0

@stuartd固定。它是在一個void addSymbol()中,它需要在XP機器上安裝字符串_symbol – Zer0

+0

是Arial Unicode MS嗎?這是非常常見的,但不是100%。 – stuartd

回答

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,does上的默認UI字體)。

爲使字符正確顯示,您需要找到/安裝/使用具有這些字符的字形的字體。

相關問題