Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字体不支持样式';常规';-在C语言中使用半黑体字体#_C#_.net_Fonts_Truetype - Fatal编程技术网

C# 字体不支持样式';常规';-在C语言中使用半黑体字体#

C# 字体不支持样式';常规';-在C语言中使用半黑体字体#,c#,.net,fonts,truetype,C#,.net,Fonts,Truetype,我有一个TrueType字体,它是“半黑体”。我尝试使用以下方法: private FontFamily GetFontFamily(string name) { PrivateFontCollection pfc = new PrivateFontCollection(); var path = Server.MapPath("~/Static/webfont/" + name + ".ttf");

我有一个TrueType字体,它是“半黑体”。我尝试使用以下方法:

        private FontFamily GetFontFamily(string name)
        {
            PrivateFontCollection pfc = new PrivateFontCollection();
            var path = Server.MapPath("~/Static/webfont/" + name + ".ttf");
            pfc.AddFontFile(path);
            return pfc.Families[0];
        }

        private Font GetFont(string name, int size,FontStyle style)
        {
            return new Font(GetFontFamily(name), size, style);
        }
其中我提供了我的字体名称,它会找到
Sentinel SemiboldItalic.ttf
字体。作为一名
FontStyle
,我尝试在.NET框架中提供任何选项(常规、粗体、斜体、下划线和删除线)

不管怎样,我都会得到以下错误:

字体“Sentinel Semibold”不支持样式“常规”


我该怎么办?如何在C#中使用半加粗字体作为字体?此外,我是否可以将TrueType字体转换为常规字体(如果这样可以解决问题)?

正如您在对的回答中所看到的,每个字体都有自己的属性(例如:是否启用常规样式),如字体创建者提供的


通过查看您的字体(即使只是查看其名称),似乎很清楚它是一个子类型,其定义特征正是(半)粗体和斜体;因此,不选择删除这些功能听起来是合乎逻辑的。如果你想要一个非粗体、非斜体的版本,你应该依靠父族(Sentinel)。

我也和你一样面临同样的问题。并发现,即使我们正在添加字体[.ttf]文件,也会在privatefontcollection中添加不正确的字体。因此,我找到了这个案例的解决办法。此问题将随机抛出。因此,添加字体,直到在私有字体集合中添加正确的字体

  private FontFamily GetFontFamily(string name)
    {
        PrivateFontCollection pfc = new PrivateFontCollection();
        var path = Server.MapPath("~/Static/webfont/" + name + ".ttf");
        pfc.AddFontFile(path);
**while (pfc.FontFamilies != null && pfc.Families.Length > 0 && (pfc.FontFamilies[0] as FontFamily).Name != "YourFontName")
        {
            pfc.Dispose();
            pfc = new PrivateFontCollection();
            GetFontFamily();
        }
        return pfc.Families[0];
    }