`
iamzealotwang
  • 浏览: 118623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

As3 Embed Font(3) ----------Embed Chinese Word

    博客分类:
  • As3
阅读更多

绑定一份字体文件应该是比较容易的事情,网上的教程有许多。

我之前也写了两篇介绍如何绑定字体的Blog(注意Flex4环境下绑定字体有些许不同,在此就不多说了。需要了解的朋友请看我之前的Blog)

 

今天主要说一下绑定中文字符遇到的问题

 

中文字符不像英语只有26个英文单词,所以字体文件都比较大。以微软雅黑为例 一份字体文件就有20多M,要是直接将字体文件绑定进程序中实在难以想象,

所以就要把真正需要的文字绑入其中。

 

对于游戏开发来说,一般都会有一个lang.xml,里面包含了游戏中会用到的所有字符

如:

<root>

   <text key = "BUTTON_OK" value = "确定">

</root>

 

所以只要写一小段代码,把这些字符读出来,然后绑定到一个swf上(可以是主文件,也可以是一份资源文件)。具体的代码由于公司在用,所以不便拿出来share,

但大体上KeyCode如下:

 

1)将中文转换成Unicode的Java代码

 

Java语言:
private Set<String> textSet = new HashSet<String>(0); //定义个HashSet 这样可以自动删除多余字符

String inputString = “你需要转换的字符串,通过XML读入”;
for (char c : inputString.toCharArray()) {
   textSet.add(Integer.toHexString(c));                             //转换到Unicode代码
}

 

 

 

2)将字符绑定到AsClass

 

ActionScript 3语言:
[Embed(source="msyh.ttf", fontName="MyArialSSSS",
   unicodeRange="U+35,U+8bef,U+773c,",
   mimeType="application/x-font" ,embedAsCFF="false")]
public static const ChineseFontEmbedClass:Class

 

 

 

从java中转换过来的字符均为"U+"后面的部分,如Demo中 35,8bef,773c,需要操作Java将每个字符前面加入"U+",后面在加入"," 可以不用对数组的最后一个元素进行特殊处理,

最后一个元素后面在跟一个","的话As3依旧可以编译通过,不会有任何问题。

 

 

至于整体代码我就不贴上面了(万分抱歉),我读xml用的是dom4j,写as3文件是velocity,这些网上有许多Tutorial,并且这里例子也用不了太复杂的功能。

 

 

根据我的测试,一共绑定了229个Unicode字符,主程序大了40K左右。效果还是可以接受的,毕竟一个英文字体文件也有100多K呢。

 

如有任何指教或问题,请给我留言。

 

参考资料:

 

http://kevincao.com/2009/06/flash-font-1/  里面也有一个不错的工具,有兴趣的朋友可以看看

 

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics