private void Font_IsStyleAvailable()
{
Graphics graphics = CreateGraphics();
graphics.Clear(Color.White);
Pen pen = new Pen(Color.Gray);
PointF pointf = new PointF(10.0f, 0.0f);
SolidBrush solidbrush = new SolidBrush(Color.Black);
Font mesfont = new Font("Arial", 12);
//调用PrivateFontCollection类读取私有字体
PrivateFontCollection privatefontcollection = new PrivateFontCollection();
privatefontcollection.AddFontFile(@"C:/windows/fonts/simhei.ttf");
privatefontcollection.AddFontFile(@"C:/windows/fonts/CourBI.ttf");
privatefontcollection.AddFontFile(@"C:/windows/fonts/STLITI.ttf");
string familyname = string.Empty;
string tmpmes = string.Empty;
int count = privatefontcollection.Families.Length;
FontFamily[] fontfamilies = new FontFamily[count];
fontfamilies = privatefontcollection.Families;
for (int j = 0; j < count; j++)
{
familyname = fontfamilies[j].Name;
//判断字体的常规风格是否可用
if (fontfamilies[j].IsStyleAvailable(FontStyle.Regular))
{
tmpmes = "字体的常规风格可用";
FontFamily fontfamily = new FontFamily(familyname, privatefontcollection);
Font tmpfont = new Font(fontfamily, 12, FontStyle.Regular, GraphicsUnit.Pixel);
graphics.DrawString(familyname + tmpmes, tmpfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
else
{
graphics.DrawString(familyname + tmpmes + "字体的常规风格不可用", mesfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
tmpmes = string.Empty;
//判断字体的粗体风格是否可用
if (fontfamilies[j].IsStyleAvailable(FontStyle.Bold))
{
tmpmes = "字体的粗体风格可用";
FontFamily fontfamily = new FontFamily(familyname, privatefontcollection);
Font tmpfont = new Font(fontfamily, 12, FontStyle.Bold, GraphicsUnit.Pixel);
graphics.DrawString(familyname + tmpmes, tmpfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
else
{
graphics.DrawString(familyname + tmpmes + " 字体的粗体风格不可用", mesfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
tmpmes = string.Empty;
//判断字体的斜体风格是否可用
if (fontfamilies[j].IsStyleAvailable(FontStyle.Italic))
{
tmpmes = "字体的斜体风格可用";
FontFamily fontfamily = new FontFamily(familyname, privatefontcollection);
Font tmpfont = new Font(fontfamily, 12, FontStyle.Italic, GraphicsUnit.Pixel);
graphics.DrawString(familyname + tmpmes, tmpfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
else
{
graphics.DrawString(familyname + tmpmes + " 字体的斜体风格不可用", mesfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
tmpmes = string.Empty;
//判断字体的下划线风格是否可用
if (fontfamilies[j].IsStyleAvailable(FontStyle.Underline))
{
tmpmes = "字体的下划线风格可用";
FontFamily fontfamily = new FontFamily(familyname, privatefontcollection);
Font tmpfont = new Font(fontfamily, 12, FontStyle.Underline, GraphicsUnit.Pixel);
graphics.DrawString(familyname + tmpmes, tmpfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
else
{
graphics.DrawString(familyname + tmpmes + " 字体的下划线风格不可用", mesfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
tmpmes = string.Empty;
//判断字体的强调线风格是否可用
if (fontfamilies[j].IsStyleAvailable(FontStyle.Strikeout))
{
tmpmes = "字体的强调线风格可用";
FontFamily fontfamily = new FontFamily(familyname, privatefontcollection);
Font tmpfont = new Font(fontfamily, 12, FontStyle.Strikeout, GraphicsUnit.Pixel);
graphics.DrawString(familyname + tmpmes, tmpfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
else
{
graphics.DrawString(familyname + tmpmes + " 字体的强调线风格不可用", mesfont, solidbrush, pointf);
pointf.Y += mesfont.Height;
}
graphics.DrawLine(pen, 0, (int)pointf.Y, 400, (int)pointf.Y);
pointf.Y += 10.0f;
}
}
------------------------------------在做验证码或者LOGO水印的时,有时会想使用一些比较特殊的字体...但对于使用虚拟主机的我们来说,想叫服务器商在服务器上帮我安装一个我们需要的一个或多个字体,那是非常困难的事情....
所以只好在CSDN上寻找答案..可是在久久都寻找不到好的解决办法的情况下,只好自己,在MSDN上.搜索与FONT有关的信息,一个一个的翻....最后居然让我找到一个关键字AddFontFile(string filename),眼前一亮,顺藤摸瓜,找到了PrivateFontCollection 类,最后找到了解决的方法...
PrivateFontCollection 类:提供一个字体系列集合,该集合是基于客户端应用程序提供的字体文件生成的。
也就是说,这是一个集合,只要我们向这个集合里添加我们自己的字体,再调用就可以了..以下是调用的方法
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
就这么简单的几句,却找得我好苦哦~~希望对想在利用特殊字体制作LOGO水印或验证码的朋友能够提供帮助