[AS3]Flash嵌入字体的进阶方法
关于如何在Flash应用中嵌入字体,这个话题一直都是一个焦点。最简单的,打开Flash, 新建一个动态文本,选择字体,然后在 Embed Characters里选择或者添加需要嵌入的字符。
比较复杂的是下面两种在Flash Builder里分别针对Flex与Action Script项目的嵌入方法。
Flex项目
使用css格式swf文件:
css文件定义如下例
- @font-face{
- src:url(“xxx.ttf”);
- font-family:xxx;
- unicodeRange:
- U+0041-U+005A, /* Upper-Case [A..Z] */
- U+0061-U+007A, /* Lower-Case a-z */
- U+0030-U+0039 /* Numbers [0..9] */,
- …..}
然后用mxmlc将css发布成swf文件,用StyleManager.loadStyleDeclarations([url])来调用,调用成功后就可以获取字体信息。
Flash项目
使用Embed标签
- [Embed (source="xxx.ttf",fontFamily="xxx", unicodeRange="..." )]
- private var myFontClass:Class;
- …
- Font.registerFont(myFontClass)
前种方法的好处在于运行时加载字体信息,但是和后种方法一样,缺点在于使用unicodeRange并不能很好的编辑所要嵌入的字符。下面我重点来介绍一下我最提倡的运行时载入字体的方法:
1,建立字体库flash文件(如font_lib.fla),使用最简单的方法,打开flash,在舞台上建立文本并且手动添加字符集。
2,建立一个AS作为Application, 比如font_zh.as 核心代码如下:
- [Embed (source="font_lib.swf", fontName="xxxx")]
- private var fontClass:Class;
- //这里注意字体名xxx要与font_lib.fla里的文本所使用的字体名一致。
- ….
- Font.registerFont(fontClass)
3,建立css文件,如style.css:
- headline{
- font-family:’xxx’
- font-size:20
- }
4,运行时载入style.css,用StyleSheet来初始化:
- var tmpStyleSheet: StyleSheet = new StyleSheet();
- tmpStyleSheet.parseCSS(参数为css的内容);
5,载入font_zh.swf后,便可以使用字体了,如:
- var tf:TextField = new TextField();
- tf.styleSheet = tmpStyleSheet;
- tf.embedFonts = true;
- tf.htmlText = “<headline>” + “This is a headline” + “</headline>”
这样的方法,好处很多,既可以运行时载入字体文件,又可以很方便的修改需要嵌入的字符。
唯一的也是始终都无法避免的问题,就是无法运行时定义嵌入字符,无法避免每次修改字符集后都要手动更新字库。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例