Linux的Flash里的中文字经常会显示不出来,或显示成广块。网上有一些简单解决办法,即删除/etc/fonts/conf.d/49-sansserif.conf文件。这个文件仅是一个符号链接而已,所以不必备份,直接删除即可。这样操作后,大部分flash确实可以显示中文了,比如开心网的菜地,Google的音乐播放器等。但仔细看就会发现,有少里中文仍然显示不出来,比如* *堂flash游戏里,而且flash里的中文被显示成楷体。这是怎么回事呢?
在* *堂Flash游戏里部分中文字无法显示
经过搜索,发现adinas的博客http://my.donews.com/adinas/2006/12/...mjusznhrgokhw/ 里写出了原因,Flash插件里把中文字体写死了,搜索中文的顺序是:
- AR PL KaitiM GB
- AR PL SungtiL GB
- AR PL KaitiM Big5
- AR PL Mingti2L Big5
也就是说,Flash遇到中文时优先使用AR PL KaitiM GB(文鼎楷体 简体字),如果没找到该字体则使用AR PL SungtiL GB(文鼎宋体 简体字),以此类推。所以只要安装好这些字体,中文就能正常显示了。这些字体对应的OpenSuse包名是:
代码:
- AR PL KaitiM GB (ttf-arphic-gkai00mp)
- AR PL SungtiL GB (ttf-arphic-gbsn00lp)
- AR PL KaitiM Big5 (ttf-arphic-bkai00mp)
- R PL Mingti2L Big5 (ttf-arphic-bsmi00lp)
现在知道这个原理了,为什么安装了字体后flash里仍有部分中文不能正常显示呢?我猜测可能是字体有点问题(仅是猜测而已,我对字体不太懂)。于是我尝试把文鼎楷体替换成文鼎PL中楷Uni(字体名:AR PL Zenkai Uni,包名:ttf-arphic-ukai)。于是恢复/etc/fonts/conf.d/49-sansserif.conf文件,把最后的sans-serif替换成AR PL Zenkai Uni,并添加一个替换字体的配置:
代码:
- <match target="pattern">
- <test qual="all" name="family" compare="eq">
- <string>AR PL KaitiM GB</string>
- </test>
- <edit name="family" mode="assign">
- <string>AR PL Zenkai Uni</string>
- </edit>
</match>现在再进flash看看,效果要好些,能显示更多的中文字。
上面的图片还是有部分无法正常显示,不清楚到底怎么回事了。也许把文鼎楷体替换成windows的simsun可能会更好些,但我电脑上暂时没有这些字体,不好实验。希望有高手能对这个问题解释一下。
【编辑推荐】