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;
}
}