我正在尝试将一些任意文本写入自定义控件。
我的代码可以工作,但是当我尝试绘制诸如ü之类的字符时,它会显示一个字符所在的空方块。
我需要这个工作,因为我打算支持本地化。
我已经检查过了,Tahoma有所需的字符。我的代码如下:
string _Label = "Zurück";
Font labelFont = new Font("Tahoma", 9, FontStyle.Bold);
SizeF labelSize = e.Graphics.MeasureString(_Label, labelFont);
this.Width = (int)(labelSize.Width + this.Padding.Horizontal);
e.Graphics.DrawString(_Label, labelFont, Brushes.White, new PointF(this.Padding.Left, this.Padding.Top));
任何人都知道如何解决这个问题?
答案 0 :(得分:2)
如果您使用的字体不包含字形,您将看到一个矩形。你知道情况并非如此,Tahoma肯定有ü。这意味着真正的问题是你没有正确地实现文件。
您需要了解文件中的文本是如何编码的。你知道它不是UTF8,这是StreamReader的默认值。你的下一个猜测可能应该是:
var sr = new StreamReader(path, Encoding.Default);
// Read file...
答案 1 :(得分:0)
确保字体支持字符(使用charmap或其他东西)并使用unicode。
Ex:\ u00FC应该是您正在寻找的角色
以Unicode格式读取文件:
StreamReader UnicodeFileRead new StreamReader(input, System.Text.Encoding.Unicode);