unity font研究小结

本文探讨了在Unity中使用动态字体时遇到的Android兼容性问题,特别是中文显示不正常的情况。通过研究Unity的Font文档,了解到Arial字体在Android上的映射问题,并分析了Android的默认字体Droid Sans Fallback。文中建议通过设置Font Names属性来确保在不同平台上正确显示字体,并提到使用bmfont作为替代方案的优缺点。

项目用ngui制作的界面,字体使用了unity默认的Arial,发布后在一些android手机上发现中文不显示,就此作了一些调查。


参考unity的font说明文档:http://docs.unity3d.com/Manual/class-Font.htmlhttp://game.ceeger.com/Components/class-Font.html(中文翻译版)

1.使用动态(Dynamic)字体:

好处,动态字基本包括所有字(中文等),大小可调,显示清晰,可用于动态文本。

unity方便的支持ttf,otf格式的字体,字体文件放到Assets目录下任何位置,untiy会自动为其生成材质和贴图。


导入的字体可以做一些设置,在文档里对每个都有解释。其中设置Character 为dynamic。

Include Font Data选中表示把该字体打包进安装包,然后安装到用户机器上去,如果用户机器自带有该字体,可以不打包进来,但是需要在Font Names指定系统要用到的字体顺序。(导入字体后Font Names属性会自动显示这个字体的名字,注意不是字体的文件名,字体名是该字体的系统标示名)

对于中文字体,选择Include Font Data的问题是字库太大,比如黑体有9M,雅黑10多M。会导致安装文件增大(9M黑打打包进unity将增大安装文件5M),如果项目要用到不止一种动态字体就更郁闷了,unity方便的支持ttf等字体对西文字符是个便利的事,对中文来讲还有瘦身等问题要处理。

如果不打包字体则需要保证系统中已经存在该字体,此时Font Names属性生效,在运行时自动从系统中寻找列表中的字体,直到找到为止。

如果使用unity默认动态字体Arial,对此的解释是发布到不同的平台后将默认使用当前平台的默认字体。在测试时发现在小米1的机器上,低版本miui系统里无法显示汉字,另一台高版本miui的小米手机可以显示Arial,simei等字体(不需要打包进安装文件),在一台魅族手机上测试也不能显示Arial。因此unity的Arial字体与平台的映射关系并不保险。

andriod系统有自己的默认字体Droid Sans(只含西文字符),和默认中文字体Dro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值