读取私有字体信息并进行相关判断及Asp.Net 如何在Server端如何使用非系统默认安装字体

<script src="http://wz.csdn.net/javascripts/vote.js" type="text/javascript"></script> 读取私有字体信息并进行相关判断   <script src="http://blog.csdn.net/count.aspx?ID=1728534&Type=Rank" type="text/javascript"></script>

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

        } 

 ------------------------------------
<script src="http://wz.csdn.net/javascripts/vote.js" type="text/javascript"></script>  Asp.Net 如何在Server端如何使用非系统默认安装字体?   <script src="http://blog.csdn.net/count.aspx?ID=1820812&Type=Rank" type="text/javascript"></script>

在做验证码或者LOGO水印的时,有时会想使用一些比较特殊的字体...但对于使用虚拟主机的我们来说,想叫服务器商在服务器上帮我安装一个我们需要的一个或多个字体,那是非常困难的事情.... 

所以只好在CSDN上寻找答案..可是在久久都寻找不到好的解决办法的情况下,只好自己,在MSDN上.搜索与FONT有关的信息,一个一个的翻....最后居然让我找到一个关键字AddFontFile(string filename),眼前一亮,顺藤摸瓜,找到了PrivateFontCollection 类,最后找到了解决的方法...

PrivateFontCollection 类:提供一个字体系列集合,该集合是基于客户端应用程序提供的字体文件生成的。

也就是说,这是一个集合,只要我们向这个集合里添加我们自己的字体,再调用就可以了..以下是调用的方法

System.Drawing.Text.PrivateFontCollection pfc  =   new  System.Drawing.Text.PrivateFontCollection();
string  fontpath  =  Server.MapPath( " ~/Fonts/MYTHOLOG.TTF " ); // 相对于虚拟目录的字体文件路径
pfc.AddFontFile(fontpath);
Font font 
=   new  System.Drawing.Font(pfc.Families[ 0 ], 20 );  // 至此我们就可以使用Font字体啦~~

 

就这么简单的几句,却找得我好苦哦~~希望对想在利用特殊字体制作LOGO水印或验证码的朋友能够提供帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值