详解
========上篇========
flash的优点之一就是能够使用各种各样的字体,而传统的HTML要使用各种各样非系统默认的字体只有两种办法
1,是将特殊字体嵌入到浏览器中,可惜这一功能不仅仅体积巨大而且并不是对于所有浏览器都适用。(英文字体倒只有百来K但是中文字体起码都1M以上)这样的办法对于中文来说显然是不现实的
2,是将所用到特殊字体的地方都做成图片,这样的好处是任何平台浏览器显示效果都是一致的。但是缺点也是明显的,首先修改不容易,即使是最细微的修改也需要用专门的图形编辑软件来修改,很是麻烦。而且不可能用太多的字体,那样图片会极其巨大甚至比嵌入字体所需要的体积还大。
flash完全没有以上的任何问题,当你输入任何字体(包括系统字体)在导出成SWF格式的时候会自动转换成图形,就是说在任何平台显示效果都是一样的,无论他安装没有安装这种字体。而且要修改的时候跟修改任何文本文档一样的简便。随着字数的增加,最终swf的文件也会越大。不过这种增大对于在HTML中嵌套字体所需要的动辄几M的体积相比是算不了什么的。并且与平台和显示器无关。
不过flash的特点以及优势就是小巧,多增加一个字就增加几百字节的大小,这对于flash来说也是不能忍受的。所以flash提供了更多的功能让swf文件更小巧。下面我将详细讲述flash关于字体元件与字符嵌入等功能的优点,缺点以及适用范围。
先说flash中“使用设备字体”的功能,此功能在文本属性里。只对静态文本有效,前面已经说了,输入的任何文本都会被flash自动转换为图片,这样的好处是任何平台任何浏览器显示效果都一致,缺点是每增加一个字都会增加最终swf文件的大小。如果你输入一段文本,然后在属性里选择了使用设备字体。那么flash就不会把你输入的字体转换成图形,这样无论你写多少字对swf大小的影响都不大。但是当别人打开这个swf文件的时候会首先检查系统里是否有你所输入的字体,如果有则显示你当初输入的字体。这样看起来就跟你在本地机器上编辑的效果一样。但是一旦浏览者的机器上不具备你当初输入的字体,那么swf将用浏览者所使用的系统上的默认字体来显示,至于效果嘛。。。听天由命吧。这样的做法适合那种一般情况下浏览者系统里都具备的字体,即使万一浏览者里没有这种字体也能显示出字来。只不过效果无法预测而已。
现在说说动态文本中的字符嵌入功能,将文本设定成动态文本或者输入文本就会出现字符嵌入这一功能。这一功能的作用是将所选择的字符装载到swf文件中,这样动态的字符加载进去或者输入字符的时候就会变成你当初嵌入的字体。比如你当初输入了一句话使用简体黑体写的,点其属性选择嵌入字符,选择指定范围里面有很多种语言,选择你输入的字所属于的语言种类——在这里是简体中文,点确定。这样就等于你把整套简体黑体嵌入到了flash文件里,当加载动态文字的时候这个地方显示的就是黑体。这样会使最终的swf文件增加1M多(具体大小根据字体的大小来决定,所以英文肯定比中文要小的多)。经过测试嵌套进去的字体对静态文本一样有效。比如这里嵌套进去了简体黑体,所以你输入大量的静态的简体黑体后倒出的swf文件只增加了几百字节而已。(不需要选择设备字体)
如果你输入的是简体却选择嵌入繁体,那么凡是跟简体不相同写法的繁体字是不会显示的,只有更简体写法一致的繁体才会显示。嵌入字符还有一个选项是自动填充。他会自动的把你所写的字嵌入进去,只嵌入这几个字,这样最终文件大小也会小很多。这样做的缺点是,比如你当初输入的是“你是笨蛋”,然后选择自动填充,自动填充的左边就会显示“你是笨蛋”,当然这里你也可以自己添加或者删除文字,比如删除“笨蛋”这样就是剩下“你是‘,最后选择确定。这样你只把确定两个字嵌入到了flash里。你当初创建的”你是笨蛋“只会显示”你是“其他任何字符都不会显示了。如果是输入文本也只能输入”你是“,输入其他字符是无效的。
接下来说字体元件,使用字体元件的方法是按F11打开库,鼠标左键点库文件名右边的按钮,会出现一个菜单,选择新建字型。这时候会弹出一个字型的属性框,进行设置。名称要起有意义的名称不要起字体的名称,比如”标题文字“。然后你将要用到的字体,这里要注意的是锯齿选项(下面会提到)选择好了后你可以看到在字体选择中多了一项以新建的字体文件名称为名称的字体。因为我们开始建立的字体元件名称叫标题文字,所以在这里是叫”标题文字*“选择使用这种字体,选择好了后你可以使用两种方式来好好的利用这个功能。
========中篇========
1直接放在flash文件里,这样做并不会对flash文件大小有影响,就跟普通的flash文件一样,flash默认会将字体转换成图形,你也可以设置成为系统字体。一切照旧,唯一的区别是当你更换字体的时候可以直接更换字体元件。比如你所有的文字本来都是宋体,可是后来觉得换成黑体更好看,你就可以直接更改字体元件的属性(更改的办法是打开库,选择字体元件点鼠标右键,选择属性)由宋体改成黑体。这样一来所有使用字体元件的文字全部改成黑体(想想如果你没有使用这种功能,修改起来会多痛苦)。
2 第一步跟方法一一样,全部弄完后,选择字体元件,选择链接。(打开库,选择字体元件点鼠标右键,选择链接)选择”为运行时共享导入“ URL里填写以后你将要使用的一个swf文件路径可以使用相对也可以使用绝对路径(如果在同一文件夹下可以写成"字体.swf")标识符就直接使用字体元件的名称
第二步,跟方法一一样,只不过是专门建立一个只有字体元件的swf文件。选择链接(打开库,选择字体元件点鼠标右键,选择链接),选择”为运行时共享导出“ URL里填写在上一步里写好的路径。(上一步写的是"字体.swf")标识符也跟上一步时的字体元件名称一致。然后导出成swf文件。你会发现文件比较大(如果当初选择了锯齿文字会增加这个swf字体库文件的大小(什么情况下使用锯齿请参看本BLOG相关文章))。不过大点没什么关系,这个仅仅是一个引用的文件,就好象把字体都放在这里面当方法一建立的文件有需要的时候再从这里面找。这样的话要什么取什么,方法一建立的文件的大小会非常小,小到难以置信的地步。哈哈不错的东西。而且象第一部建立的文件想改变字体什么的也只需要改变方法二建立的文件的字体元件属性。这就好比第一步建立的swf文件是第二步建立的swf文件的快捷方式一样。只是第二步建立的swf文件的引用,实际的东西都在第二步建立的swf文件里装着呢。
========下篇========
flash中字体元件在一个swf里可以引用多个。就是说你的swf作品里可以使用多种字体元件引用外部的不同的字体元件包。但是一个“被引用“的swf字体文件包里,只能存放一种字体然后打包。否则会出现错误