Flash精简字体打包成SWF - FontCreater

 

 

 

 

 

 

Flash精简字体打包成SWF

 
 
 

1. 背景介绍

 
现在网页游戏如日中天, 对 Flash 游戏的效果要求越来越高.
合适, 多样的字体, 不仅让游戏中枯燥的文字变得更有亲和力,  更让条理变得明晰, 有更强的引导性.
但是多种字体的嵌入会大大增加 下载量, 对游戏的体验就是一个沉重打打击.
有没有那么一个方法, 能扬长避短呢? 回答当然是肯定的: 技术男拯救世界嘛...
 
简单的说就是: 把所有用到的汉字的字形信息打包到一个 SWF 中去, 用不到的字不打包. 这样, 就大大减小了加载量.
 
 

2. Unicode 编码范围获取


 
这是 Unicolde 官方网站上, 亚洲语言的编码分布. 其中汉语部分, 就是上面的 CJK Unified Ideographs(han), 其编码范围是 4E00-9FCF. 其它基本用不到.
 
 
 
3. Flash SDK 中的字体工具 flex-fontkit.jar
 
如果你安装过Flash Builder 或者 Flash CS 的话, 会在安装目录里找到 sdk. 否则, 你就必须自己下载 Flash 的 SDK 了.
然后再 SDK 目录里可找到
{SDK目录}\bin\fontswf.bat
打开 fontswf.bat 可以看到内部就一句话:
java -Dsun.io.useCanonCaches=false -Xms32m -Xmx512m -jar "%~dp0..\lib\flex-fontkit.jar" %*

不用我说你肯定知道在哪里可以找到我们可爱的 flex-fontkit.jar 了.

至于 flex-fontkit.jar 的功能, 我就直接搬运 Adobe 官方文档了( 点击访问 ):
The fontswf utility is a simple command line tool that converts a single font face from a font file into a SWF file. This SWF file can be used as the source of an embedded font in your applications. Supported font file types are *.ttf, *.otf, *.ttc, and *.dfont.

Option

Description

-a, -alias name

Sets the font’s alias. The default is the font’s family name.

-b, -bold

Embeds the font’s bold face.

-i, -italic

Embeds the font’s italic face.

-o, -output file_path

Sets the output file path for the SWF file.

-u, -unicode-range range

Sets the included character range.

The default value is “*”, which includes all characters.

For information on using character ranges, see Setting character ranges.

-3

Generates a font SWF file for applications that use TextField-based text rendering. Use this option if you are creating a font SWF file for a Flex 3 application.

-4

Generates a font SWF file for applications that support CFF (Flex 4) with Flash Player 10.

This is the default option.

 
这个工具基本满足了我们所有的要求. But, 必须要加一个but, 当我们挑选出来的汉字太多的时候, ”设定 –u 参数”就成了一个非常繁琐的事情.
本博客中的工具的本质上就是”把包含咱们需要的汉字的txt文件转换成 –u 参数”, 方便咱们即使增删字体.
 
 
 
 
4. 我们的工具 - FontCreater
 
FontCreater 基本没做什么有创意的事情, 主要功能已在上面说明了. 再啰嗦一次:
本博客中的工具的本质上就是”把包含咱们需要的汉字的txt文件转换成 –u 参数”, 方便咱们即使增删字体.
 
点击可下载工具 FontCreater.
 
 
 

4.1 FontCreater 使用

 
4.1.1 配置文件方式:

下载后解压可看到 config.properties.

设置配置文件 config.properties:
打开 config.properties 文件. 每个设置选项都有说明.

 

命令行运行方式:

java -jar FontCreater.jar config.properties

 

config.properties 文件说明:

#字体文件目录
# 命令行参数 -f(font)
fontfile =C:/Users/efen/Adobe Flash Builder 4.5/TestUIEditedTool/output/assets/font/HelveticaBold.ttf

#生成的字体文件名( 在 AS3 中设置 fontFamily 就用这个名称 )
# 命令行参数 -n(name)
fontname =huakang

#所有需要的字体文本( 比如你只需要 "你我他" 三个汉字, 就在 char.txt 中添加这三个字. 然后生成的 swf 字体文件就会有这个三个字的字形 )
# 命令行参数 -c(char)
characterfile =./char.txt

#输出字体文件目录
# 命令行参数 -o
outputSwf=./huakang.swf


#需要选取的 字符编码范围
# 命令行参数 -r(range)
codeRange=0-65535
 
4.1.2 运行参数方式:

 

命令行运行方式:

javar -jar FontCreater.jar -o outputswfurl -c character.txt -f xxx.ttf -n fontname [-r characterRangeStr]

用例:

java -jar FontCreater.jar -o ./huakang.swf -c ./char.txt -f "C:/Users/efen/Adobe Flash Builder 4.5/TestUIEditedTool/output/assets/font/HelveticaBold.ttf" -n huakang

 

 

命令行参数说明:

-o 输出字体文件 XXX.swf
-c(char) 所有需要的字体文本( 比如你只需要 "你我他" 三个汉字, 就在 char.txt 中添加这三个字. 然后生成的 swf 字体文件就会有这个三个字的字形
-f(font) 字体文件url
-n(name) 生成的字体文件名( 在 AS3 中设置 fontFamily 就用这个名称 )
-r(range) 需要选取的 字符编码范围( 0-65535 )
 
 
 
 

4.2 下载链接:

 
posted @ 2013-05-23 14:54  知明所以  阅读(2381)  评论(0编辑  收藏  举报