1、“Unicode”简述
在Flash制作过程中,有一个问题每时每刻会碰到,却为所有教材、书本所忽略,那就是文本对象的“编码”问题!
比如,动画中所用到的文本是不是需要“打散”?如果不打散在别人机器上能否正常显示?为什么打开在别的机器上编辑的Fla文件会经常发生“缺少字体”警告?什么是“设备字体”及“轮廓字体”?什么是“代码页”?
还有,为什么在FlashMX 2004中编译FlashMX的Fla文件时会突然增加6M多的文件量?或者明明仅一个动态文本其swf文件达几M之巨?
与此相关的还有:为什么FlashMX 2004会对操作系统提出苛刻要求?为什么我们在导入外部文本时会出现“乱码”?为什么在swf中明明看到的文字效果在导入Flash时却变成了“韩文”甚至不见了?
等等......
尽管你可以回避关于文本编码问题,但很难想象你可以不理会“编码”而玩转Flash!
那么,Flash中的文字到底使用了怎样一种管理机制呢?
其实计算机语言是个大问题啊,世界这么大,语言问题确实太复杂啦,你一定注意到,安装软件过程中总得让你选择“语言”,语言不仅决定着使用哪些文字集,而且还关系到日期、时间、货币等等其它符号的显示格式。
Flash当然不例外,而且,随着Flash版本的几次升级,语言的管理逐渐完善。
或许你经常看到过诸如“UTF-8”、“UTF-16”的符号,其中,“UTF”的意思是“Unicode的转换格式”,那么“Unicode”又是什么呢?
从字面上看,它是“统一码”的意思,也就是我们常听到的“万国码”!实际上是计算机处理中的“文本表示法通用字符编码标准”,其作用是为“多语言纯文本”提供了一致的编码方法,它的具体功能是为每个字符指定一个唯一的数字值和名称。
Unicode的根本作用是为大多数字符定义了代码。它不仅包括世界各区域的字母脚本,还包括标点符号、变音符号、数学符号和技术符号等等。 |
上述的UTF-16、UTF-8就是Unicode 编码的两种最常见的形式(分别是16位、8位编码格式)。
下面,我们先看看Flash在文本编码问题上的发展情况:
在Flash 5 或更早版本中,使用“混合多字节编码”(欧洲语言使用 Latin-1 字符集,亚洲语言使用 Shift-JIS 字符集)。
从中我们可以看出,那时Flash的语言壁垒有多大! 而从Flash MX 开始,文本和用户界面字符串使用 Unicode 编码。同时Flash Player 6 也开始支持 Flash 影片中的 Unicode 编码内容。
但FlashMX的fla文档在编辑时是用双字节字符集 (DBCS) 编码创建文本的。虽然在它的swf播放文件中会用 Unicode中的“UTF-8”编码,但是显然它还不是完善的,因为Flash本身并不包含数据量庞大的全球语言脚本,它必需依靠我们的操作系统。
在我们的windows系统的“控制面板”中有个“区域语言”程序模块,Flash导入或输出时将使用该“区域语言”进行编码转换。我们可以在其中选择一个缺省语言。
如图1所示:
而FlashMX 2004及它的播放器Flash Player 7 在支持Unicode 文本编码方面大大地前进了一步!现在我们的SWF 作品具备了使用多语言文本的能力,甚至在一个文本字段中使用多种语言!无论用户在什么语言的操作系统下,均可观看多语言文本! |
|
| |
|
当然,如上所述,这种能力的实现还得依赖操作系统对多语言特性的支持,FlashMX 2004在安装时强调操作系统一定要在win2000以上或许也是原因之一。
如右图所示,当把FlashMX 2004文档存为FlashMX时,系统将提示这样的警告:
从中可以证明:FlashMX 2004最重要的新特点是“永久性库数据”及对“Unicode”新的支持!
|
|
| |
|
为此,我们可以验证一下:
在winXP的“记事本”中创建一个Unicode(UTF-8)的编码文件(win2000以下的“记事本”就不支持Unicode特性),如图2所示(这是“记事本”的保存文件对话框):
然后把文本粘贴到Flash文本中,同样的FlashMX,不同的操作系统结果不同!
|
|
| 在win98环境下如图3所示: |
|
|
| 而在winXP环境下,显示正常,如图4所示: |
|
2、不必把“静态”文本对象打散
为了使别人看到自己作品中用到的特殊字体,在以前,我们往往把字“打散”让“字”变成“图”。
其实这是种落后而不科学的做法,不仅使文字变成了“非文字”,你再也不能编辑它,而且会增加文件量,另外,打散也有许多限制,比如“点阵”字打散后会发生异状或粘连,而动态文本对象根本不允许打散。
现在,在新版Flash中你根本无需打散文字,在发布或导出包含静态文本对象的 swf程序时,Flash 会创建文本的“轮廓”,这就是“轮廓字体”。
“轮廓字体”可以重复编辑,产生的swf作品在任何用户的机器(尽管机器上无该种字体)上能正常显示,但当你导入该fla时,如果你的系统上没有相应字体时,Flash将要求你选择替换或者使用缺省字体,因为“轮廓字体”仅能在播放器中正常显示。你可以在“字体映射”对话框中为缺少的字体选择一种替换字体,或者使用默认字体。
注意,并不是所有字体都能在swf中嵌入“轮廓”的,要想知道这一点,可以通过菜单“视图”>“预览模式”>“消除文字锯齿”命令测试,如果有锯齿则表明 Flash 不能识别该字体轮廓,如图5所示: |
|
据我测试,我系统所装的特殊字体均能嵌入“轮廓”字体。
那么如果你很喜欢别人作品中的字体,虽然在播放器中显示正常,但是导入Flash中却不行了,这时,你只能有3种选择:用flash中设置的默认字体替代,选择“映射字体”,安装相应的字体字库。
如图6所示是“字体映射”对话窗口: |
|
请继续下面的内容......
|