[AS3]AS3.0中文字体flash如何嵌入字体
[AS3]AS3.0中文字体flash如何嵌入字体,由于中文字体体积比较大,在项目需要使用不常见的中文字体时,就要用嵌入字体的方式来把指定字符嵌入到游戏中,下面是两种方法
由于中文字体体积比较大,在项目需要使用不常见的中文字体时,就要用嵌入字体的方式来把指定字符嵌入到游戏中,下面是两种方法:
方法一:使用Embed
Embed的unicodeRange允许指定要嵌入字符的16进制unicode字符,如果字符变更了,还要重新编译生成swf,对于频繁更新的项目地带来不便。 以嵌入微软雅黑字体为例,代码如下:
- [SWF(width="100", height="50", backgroundColor="#CCCCCC")]
- public class TestFont extends Sprite
- {
- [Embed(source="c:/windows/fonts/msyh.ttf", embedAsCFF="false", fontName="DefaultFont",
mimeType="application/x-font", unicodeRange="U+4f60, U+597d, U+4e16, U+754c")]- public static var DefaultFont:Class;
- public function TestFont()
- {
- var text:TextField = new TextField();
- text.defaultTextFormat = new TextFormat("DefaultFont", 20, 0);
- text.text = "你好世界";
- text.embedFonts = true;
- text.width = 200;
- texttext.x = text.y = 10;
- addChild(text);
- }
- }
方法二: 使用Flash Professional嵌入并生成swf供项目动态读取
使用Flash嵌入字体即不用生成unicode字符,在字符发生变更后,也不用重新编译主程序,个人觉得算是最适合的方法了。 首先需要在Flash中通过 文本 -> 字体嵌入 菜单来嵌入字体:
使用时的代码如下:
- // 通过读取swf文件来获取swf中的字体类
- var skillFontClass:Class = ResLoader.getInstance().getClassByLinkName("SkillFont");
- // CuPlayer.com注册字体
- Font.registerFont(skillFontClass);
- // CuPlayer.com实列化字体
- var skillFont:Font = new skillFontClass();
- // CuPlayer.com设置字体格式
- var textFormat:TextFormat = new TextFormat();
- textFormat.font = skillFont.fontName;
- textFormat.size = 40;
- textFormat.color = 0x000000;
- // CuPlayer.com建立文本实例
- var skillText:TextField = new TextField();
- skillText.defaultTextFormat = textFormat;
- skillText.autoSize = TextFieldAutoSize.LEFT;
- skillText.embedFonts = true;
- skillText.text = "你好世界";
- addChild(skillText);
效果:
工具:
在网上找了半天没找到好用的字符转16进制Unicode的工具,索性自己写了一个,下载String2HexUnicode (需要.Net Framework 2.0)。
热门文章推荐
- [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示例
请稍候...