C# Monotype Crosiva字体样式不';t以winform的原样显示';s在MS-word中的出现

C# Monotype Crosiva字体样式不';t以winform的原样显示';s在MS-word中的出现,c#,winforms,C#,Winforms,在我的winform中,我有一个标签,我将它的字体类型更改为一个名为(MonotypeCorsiva)的特定字体。 但是字体样式并不像在MS word中那样显示(参见下图) 1是Microsoft word中显示的字体样式,2是Winform中的我的标签“从窗体剪裁” 字体不支持常规,我将其设置为斜体,但它不起作用,我还尝试重新灌输字体,不进行更改。有人能帮我吗?我最近在WinForms exe中嵌入了一种字体,以确保它存在于用户计算机上,因为我遇到了类似的问题 将字体文件添加到Resourc

在我的winform中,我有一个标签,我将它的字体类型更改为一个名为(MonotypeCorsiva)的特定字体。 但是字体样式并不像在MS word中那样显示(参见下图)

1是Microsoft word中显示的字体样式,2是Winform中的我的标签“从窗体剪裁”


字体不支持常规,我将其设置为斜体,但它不起作用,我还尝试重新灌输字体,不进行更改。有人能帮我吗?

我最近在WinForms exe中嵌入了一种字体,以确保它存在于用户计算机上,因为我遇到了类似的问题

  • 将字体文件添加到Resources.resx
  • 通过读取生成的属性添加代码以加载字体

    byte[] fontData = Properties.Resources.FONT_RESOURCE_NAME_HERE;
    
    IntPtr fontPtr = System.Runtime.InteropServices.Marshal.AllocCoTaskMem(fontData.Length);
    System.Runtime.InteropServices.Marshal.Copy(fontData, 0, fontPtr, fontData.Length);
    uint dummy = 0;
    fonts.AddMemoryFont(fontPtr, fontData.Length);
    AddFontMemResourceEx(fontPtr, (uint)fontData.Length, IntPtr.Zero, ref dummy);
    System.Runtime.InteropServices.Marshal.FreeCoTaskMem(fontPtr);
    
    Font memoryLoadedFont = new Font(fonts.Families[0], 16.0F);
    
  • 更改目标
    控件的
    .Font
    属性

    this.Font = memoryLoadedFont
    

  • 当然,您可以从任何其他位置读取字节:)

    也许这就是答案@我们非常感谢你。成功了