private void button1_Click(object sender, EventArgs e)
{
string str = "අම්මා";
byte[] utf8Bytes = Encoding.UTF8.GetBytes(str);
String productLine = Encoding.UTF8.GetString(utf8Bytes);
PrintDocument p = new PrintDocument();
p.PrintPage += delegate(object sender1, PrintPageEventArgs e1)
{
e1.Graphics.DrawString(productLine, new Font("Iskoola Pota", 18), new SolidBrush(Color.Black), new RectangleF(0, 0, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
};
try
{
p.Print();
}
catch (Exception ex)
{
throw new Exception("Exception Occured While Printing", ex);
}
}
此代码有效,但我的文字是“අම්මා”,但它显示为අ්මමා“,所以请帮助我以正确的方式显示。” Iskoola Pota“是Unicode字体
答案 0 :(得分:0)
UTF-8不是unicode。在源代码中声明字符串时,这是unicode。在你的情况下,删除短声乐的变音符号在转换过程中会丢失。但更糟糕的事情可能发生,例如, Unicode Conversion in c#
为什么选择通过UTF-8?怎么样简单
e1.Graphics.DrawString(str, ...
另外:你检查过你的“School Book”字体是否正常,即可以显示一个无人的mම්,例如在Word中使用该字体?
答案 1 :(得分:0)
使用TextRenderer.DrawText
代替Graphics.DrawString
TextRenderer.DrawText(e1.Graphics, "අම්මා", font, rectangle, Color.Black);