大家都知道在Flash中嵌入中文字型有个最大的问题就是文件量的限制,所以也都知道在Flash中有选择的嵌入字型是一个有效的方法。但是对在ActionScript中嵌入字体的技巧就不一定完全了解了。最近因为项目的关系,让我好好把这方面问题做了一次梳理。作为温故知新,我们先来简单看看最简单常见的方法。
上图是Flash CS4的文字相关界面。为一个动态文本框嵌入文件的基本方法是,在Character Embedding的弹出面板填入你所需要的字符。在上方的列表中是一些常用的字符范围。比如做Loading显示的,只要嵌入第四项Numerals,或许再多加一个“%”的符号就可以了。
在动态文本框中嵌入的这些字符在该swf文件中都是有效的。也就是说在一个swf文件中同一种字体的字符只需要嵌入一次,所有的动态文本框都能使用。所以通常的做法是把所有需要的字符都填充到一个文本框,作为全局的字体资源库,这样找起来最方便。
此外的第二种方法就是字体元件了。在库面板点右键建立Font Symbol:
这种方法可以方便的嵌入整个字型,但是因为不能选择需要嵌入的字体,所以对于中文来说几乎形同鸡肋。
此外如果要使用字型的变体:斜体和黑体,都需要另外嵌入的。因为这些变体其实算是另一种字体。面板中"Faux"的意思是指用矢量引擎虚拟出来的字型,其实原字体并没有这些变体可供选择。如果字体包含了各种变体,那么这两个选项是不可用的。
对某些不规范的或者是笔划复杂的中文字体,矢量引擎处理比较容易出错。如文字中空心的部分会变成有填充的,有的甚至会造成播放器崩溃。所以大家在使用"Faux"的时候要特别留意。
此外提醒一下大家:CS4的文字面板中已经没有粗体和斜体的按钮了,别以为没这功能了,在Text菜单里面还是可以找到的。
如果要把字体当作位图来处理,就要选择Bitmap Text位图字体。Size参数是指位图字体的大小,对矢量字体来说没意义。这个选项主要用于嵌入类似04系列这样的像素字体。
在例子中,我们建立了一个名为"MyArial"的字体,映射系统中的Arial Regular。记得激活"Export for ActionScript",这样字体资源才会被编译。
建好了字体元件后我们在字体菜单里能够看到自定义的字体以*号做了标识。现在对于文本框来说,字体无论是选择"Arial"或者"MyArial"都是可以的。用ActionScript设置文本框的embedFonts属性为true,使得文本框使用嵌入字体渲染就可以了。如果不想用到ActionScript,但是在字体设置面板中没有直接设置使用嵌入字体的开关,怎么办。我的方法是随便在嵌入框中打一个字符,如空格,使得嵌入的字符数不为0。这样也就间接激活了动态文本框的embedFonts。由于我们已经使用字体元件嵌入了整个字体,所以系统能够找到字体对应的矢量信息(glyph)。