绑定一份字体文件应该是比较容易的事情,网上的教程有许多。
我之前也写了两篇介绍如何绑定字体的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/ 里面也有一个不错的工具,有兴趣的朋友可以看看
分享到:
相关推荐
### AS3 Embed 用法详解 #### 一、引言 随着ActionScript 3.0 (简称AS3) 的普及与发展,开发人员越来越多地利用AS3进行Flash项目的开发。在AS3环境中,开发者不再像以前版本那样依赖于Flash IDE中的库来存储图形...
tomcat-embed-websocket-9.0.16.jar
tomcat-embed-core-9.0.27
tomcat-embed-jasper-9.0.16.jar
Python 3.11.0-embed-amd64.zip 是一个针对AMD64架构的Python 3.11.0精简版发行包,它包含了一组核心库和运行时支持文件,允许用户在不安装完整Python环境的情况下运行Python程序。这个压缩包特别适合那些需要在没有...
tomcat-embed-el-9.0.16.jar
tomcat-embed-core-8.5.23.jar
tomcat-embed-core-9.0.16
tomcat-embed-core-8.5.15.jar
Python 3.12.0-embed-amd64.zip 是一个针对64位Windows系统的Python轻量级打包文件,它包含了一些基本的Python运行时组件,使得开发者可以在不安装完整Python环境的情况下运行Python程序。这个压缩包尤其适用于那些...
python-3.10.7-embed-amd64
4. **libcrypto-3.dll** 和 **libssl-3.dll**:这两个文件是OpenSSL库的动态链接库版本,用于加密和安全套接层(SSL/TLS)协议。它们在Python中处理加密和网络安全通信时是必需的。 5. **sqlite3.dll**:SQLite是一...
3. `lib`目录:包含Tomcat运行所需的JAR文件和库。 4. `webapps`目录:默认的Web应用程序部署位置,你可以将你的WAR文件放在这里以部署应用。 5. `logs`目录:日志文件会被写入到这里,帮助诊断和调试问题。 6. `...
3. **Tomcat Embed Programmatic**: "tomcat-embed-programmatic.jar"提供了程序化的方式来启动和配置Tomcat,使得开发者可以在代码中创建和管理Tomcat实例,无需通过XML配置文件。 4. **Tomcat Embed Jasper**: ...
Python 3.8.0-embed-amd64.zip 是一个专门为AMD64架构设计的Python 3.8嵌入式版本的压缩包。这个压缩文件包含了运行Python 3.8程序所需的基本组件,旨在让用户在没有完整安装Python环境的情况下也能执行Python脚本。...
python-3.9.6-embed-amd64.zip python-3.9.6-embed-amd64.zip python-3.9.6-embed-amd64.zip python-3.9.6-embed-amd64.zip python-3.9.6-embed-amd64.zip python-3.9.6-embed-amd64.zip python-3.9.6-embed-amd64....
python-3.10.4-embed-amd64.zip:Python是一种动态解释型的编程语言。Python可以在Windows、UNIX、macOS等多种操作系统上使用,也可以在Java、.NET框架平台上使用。
针对Windows 64位系统的用户,Python 3.6.8 提供了一个名为"python-3.6.8-embed-amd64.zip"的压缩包,它是一个轻量级的可执行环境,无需安装,无任何依赖,解压后即可直接运行Python程序,非常适合快速部署和测试。...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装