当flash中需要用到文本时,设计师很喜欢用各种消除锯齿,程序员喜欢用设备字体。
消除锯齿美观,使用消除锯齿时,flash会提示嵌入字体,但是嵌入字体文件会太大,不嵌入字体动态文本经常会不显示,设计师会认为这应该是程序员要解决的问题,我一直不知道怎么解决。一直告诉别人,要么使用设备字体,要么嵌入字体,只能二选一,其实我自己也不懂。
一直觉得,当我们选择使用设备字体时,是优先使用我们选择的字体,选择的字体不存在时才使用设备默认的字体,这样是合理的,但是不知道flash是不是这么做的。
今天又遇到这消除锯齿的问题,使用了消除锯齿,然后什么都不显示,调了半天接口才定位到原因(夸张一点,其实开发的时候就知道可能会有问题)。
但是发现,设计师给的demo中也是用的消除锯齿,也没有嵌入字体,是可以显示的,用代码改变文本内容之后就不显示了。
仔细研究了一下,应该是在flash中添加的文本框,虽然没有选择嵌入字体,但是系统自动给嵌入了。
做了几个例子来对比。
“文字少-消除锯齿.swf”只有5k,“文字多-消除锯齿.swf”有72k;
都没有嵌入字体,但是文件大小差了很多,猜想可能是即使我们不选“嵌入字体”,系统也给嵌入了。
“文字多-消除锯齿.swf”有72k,“文字多-嵌入字体.swf”有72k
文本内容一样,文件大小也一样,进一步验证了,系统自动给我们嵌入了字体。
“文字多-嵌入字体-显示.swf”有70k,“文字多-嵌入字体-不显示.swf”有70k;
嵌入了字体,显示和不显示只差了2k。
“文字多-设备字体.swf”只有3k,“文字多-嵌入字体.swf”有72k;
内容是一样的,说明主要是嵌入字体占用的,文字内容本身占用体积很小。
虽然有人说不嵌入字体可以解决:http://bbs.9ria.com/thread-102286-1-1.html
但是,除非万不得已,不推荐这种方法。
对,研究来研究去,最终的结论还是“要么使用设备字体,要么嵌入字体”。你可以认为这是flash的BUG,但是不要忘了,你每次点“消除锯齿”时,flash都会提示你嵌入字体,甚至编译的时候,也会有警告,只是我们习惯了忽略罢了。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。