检测客户端是否包含特定字体

来源:互联网 发布:淘宝哪家二手手机好 编辑:程序博客网 时间:2024/05/06 05:54

AS3文本处理:检测客户端是否包含特定字体

日常项目当中我们经常会使用一些比较特殊的字体来显示文本,比如微软雅黑等等;

但如果客户端没有相应的字体,我们必须用另一种常见的字体,并更改相应样式如:字号,行高...等等来替代,以达到相对完美的展示效果。

var txtFormat:TextFormat;

var txtField:TextField =new TextField();

 

if ("有微软雅黑字体")

{

    txtFormat = newTextFormat("微软雅黑", 11, 0x333333);

    txtFormat.leading = 3;

}else

{

    txtFormat = newTextFormat("宋体,Arial", 12,0x333333);

    //微软雅黑的行高,比宋体高,此处要增加一定的行高来保证行间距。

    txtFormat.leading = 6;

}

txtField.defaultTextFormat = txtFormat;

txtField.text = "我爱北京天安门\n天安门上太阳升";

 

那么我们怎么才能判断客户端是否有我们需要的字体呢?

查官方文档也没用相应的API,但是Font有这么一个方法:enumerateFonts()

该方法的作用是:来获取包括所有设备字体(如果参数设置为true)和嵌入字体的列表

于是想出了一个笨办法:可以通过它来得到当前客户端设备的字体列表,遍历并比对这个列表中每个字体的fontName,上代码:

privatefunction checkFontFamily(fontName:String):Boolean

{

    var localFonts:Array = Font.enumerateFonts(true);

    var f:Font;

    var fName:String;

    var hasFont:Boolean =false;

    for (var i:int = 0, len:int = localFonts.length; i < len; i++)

    {

        f = localFonts[i] as Font;

        fName = f.fontName;

        if (fName == fontName)

        {

            hasFont = true;

            return hasFont;

        }

    }

   

    return hasFont;

}

 

0 0
原创粉丝点击