C# TextRenderer不绘制一些符号字符

C# TextRenderer不绘制一些符号字符,c#,drawtext,text-rendering,C#,Drawtext,Text Rendering,我正在尝试使用Graphics.DrawString和TextRenderer.DrawText绘制一些文本。我使用符号字体,但输出不同-TextRenderer不处理小于或等于、大于或等于、不等于字节值0xA3、0xB3、0xB9的符号-它绘制框而不是它们。但是,其他特殊符号绘制正确-例如平方根0xD6。两种方法使用相同的字体。如何使TextRenderer正确绘制这些符号 编辑: 我运行的是捷克语版本的.NET4和Windows7Ultimate,但我已经用英语版本测试过了,看起来还是一样的

我正在尝试使用Graphics.DrawString和TextRenderer.DrawText绘制一些文本。我使用符号字体,但输出不同-TextRenderer不处理小于或等于、大于或等于、不等于字节值0xA3、0xB3、0xB9的符号-它绘制框而不是它们。但是,其他特殊符号绘制正确-例如平方根0xD6。两种方法使用相同的字体。如何使TextRenderer正确绘制这些符号

编辑:

我运行的是捷克语版本的.NET4和Windows7Ultimate,但我已经用英语版本测试过了,看起来还是一样的

以下是我的测试应用程序中的代码:

private void panelDrawString_Paint( object sender, PaintEventArgs e )
{
    byte[] array = new byte[] { 0xA3, 0xB3, 0xB9, 0xA4, 0xD6, 0xB4, 0xB0 };
    string s = new string( array.Select( b => (char) b ).ToArray() );

    using( StringFormat sf = StringFormat.GenericDefault )
    using( Font font  = new Font( "Symbol", 14, FontStyle.Regular ) )
    {
        sf.Alignment = StringAlignment.Center;
        sf.LineAlignment = StringAlignment.Center;

        e.Graphics.DrawString( s, font, SystemBrushes.WindowText, panelDrawString.ClientRectangle, sf );
    }
}

private void panelTextRenderer_Paint( object sender, PaintEventArgs e )
{
    byte[] array = new byte[] { 0xA3, 0xB3, 0xB9, 0xA4, 0xD6, 0xB4, 0xB0 };
    string s = new string( array.Select( b => (char) b ).ToArray() );

    using( Font font  = new Font( "Symbol", 14, FontStyle.Regular ) )
    {
        TextRenderer.DrawText( e.Graphics, s, font, panelTextRenderer.ClientRectangle, panelTextRenderer.ForeColor );
    }
}
这是输出:


在发布回复时可能会有点晚

正如GdiCharSet中所述,是您的问题的原因。Microsoft承认它不支持所有平台的所有版本

字体由字形组成,如√' 对于平方根的基数和类似0xD6的代码页,对于平方根的基数,将为未知的任何代码页值绘制矩形图示符

但是,在您的情况下,TextRenderer和DrawString使用的代码页值与您认为使用的代码页值不同

您创建的保存字符的字符串也会将代码页转换为UFT16。 这意味着当值被类型转换为char值并放入字符串中时,值0xA3将被转换为

DrawText和DrawString都使用不同的方法打印图示符。抽绳将打印预期结果,因为它将命名值“小于或等于”转换为图示符。但是,DrawText打印属于0x2264的图示符


出于您的目的,您应该只使用抽绳。

我试一下就可以了。通过记录.NET版本和Windows版本来改进您的问题,并发布一段代码片段。是的..工作正常。。在渲染或复制粘贴符号时是否使用了这些字节?