美文网首页
[Unity] 多语言字体的坑

[Unity] 多语言字体的坑

作者: _Walker__ | 来源:发表于2020-04-11 15:08 被阅读0次

    1.前置问题

    • UGUI中Text设置的FontSize跟RectTransform的Height经常性的不一致,Height需要比FontSize大一些
    • 不同的FontSize,需要的偏差值不同
    • 不同字体,需要的偏差值也不同
    中文字体24号字可显示的临界值 (+7) Height=30(+6)显示不出24号字 中文字体40号字可显示的临界值 (+13) Height=52(+12)显示不出40号字 泰文字体Height=35(+11)显示不出24号字,可显临界值是36

    2.项目中多语言用不同字体的问题

      我们项目中,不同的语言使用的字体是不同的。但日常开发中大家只会关注中文,界面布局、组件参数的设置都是基于可见的中文文字做的。由于上面不同字体Height与FontSize偏差值不同的问题,导致游戏在切换语言后,出现两种问题:

    1. 文字消失:不勾选BestFit的地方,当某种字体需要的偏差值比中文的更大时,界面上文字就不可见了。
    2. 文字变大或变小:勾选BestFit的地方,文字会改变大小适配有限的空间,但由于每种字体需要的空间不同,就会出现大小不一致的问题。

    3.使用FontCreator处理差异

    方案:将所有字体的 Metrics(度量) 跟 General(头部) 设置统一参数
    面板入口 Metrics(度量)

    这里有两个Calculate按钮,可以点一下,它会根据字体的内容优化一下各项参数

    General(头部)

    General里Units per em:数值越大字体越小

      处理多个字体的差异,可以无脑将两个页签的参数全部复制粘贴应用即可。我们是用中文做开发,那么将中文字体的参数作为标准值,应用到其他字体。


    上面方案是可以消除差异,不过文字显示出来的大小就不对了。感觉上可以通过其他参数修正过来,后面找到再记录吧。目前可以通过粗暴的调整Metrics里的Win Ascent、Win Descent、Ascender、Descender几个参数解决问题。

    相关文章

      网友评论

          本文标题:[Unity] 多语言字体的坑

          本文链接:https://www.haomeiwen.com/subject/jhpymhtx.html