记一次造字经历 - 用FontCreator解决Unity NGUI Label不同字体不同偏移问题

中文字体出现偏上

在一次Unity开发中,我们尝试使用一款新的字体。但是直接把字体替换掉后,新字体的中文部分是向上偏移一点点的:

左边是旧字体;右边是新字体,中文部分细微向上偏移
但是英文部分的基线是一致的!

可以看到英文部分虽然更大,但是字体的基线是一致的;这里大概估计,基线一致的情况下,出问题的就是因为这只中文字体的中文部分确实是偏上了!

怎么办?总不可能把所有的UILabel全部调整一次坐标吧?
因此——

对字体进行修改!

使用FontCreator编辑字体

记一次造字经历 - 用FontCreator解决Unity NGUI Label不同字体不同偏移问题_第1张图片
FontCreator

我们需要用到FontCreator软件对字体进行编辑,一个功能超丰富的字体编辑器,请自行百度FontCreator。

打开FontCreator,把字体拖入软件,就可以开始进行编辑了。我们只需简单的两步,来调整中文字体。

第一步:重新计算度量范围

记一次造字经历 - 用FontCreator解决Unity NGUI Label不同字体不同偏移问题_第2张图片
重新计算度量范围:格式->字体设置->度量->计算

进入菜单,格式->字体设置->度量->计算,让FontCreator重新计算一系列适当的值。
因为我不懂字体,这一步也是懵的。但是光做这一步,就可以略微调整Unity中的显示,偏移会减轻。

第二步:对中文字符偏移

记一次造字经历 - 用FontCreator解决Unity NGUI Label不同字体不同偏移问题_第3张图片
选中所有中文

在FontCreator中选中所有的中文。Unicode编码中,中文范围是4E00-9FA5。
点击一下uni4E00的字符,然后拉动滚动条,找到到9FA5字符(先别点击),按住Shift键,点击uni9FA5的字符。这样就可以选中所有的中文了。

实际情况中,发现部分字体不带uniXXYY的名称,可以右键,属性,映射标签页的“值”里找到unicode值。

记一次造字经历 - 用FontCreator解决Unity NGUI Label不同字体不同偏移问题_第4张图片
“工具->字形转换”,调整中文字体的位置

点选菜单,工具->字形转换,从左边Outlines里选择Move,并且填入参数水平0,垂直-100,也就是让字体向下移动100个单位(具体数值根据实际情况改写),点击确定。然后保存字体!

最终效果

记一次造字经历 - 用FontCreator解决Unity NGUI Label不同字体不同偏移问题_第5张图片
“度量计算”+“中文向下偏移100”

重新回到Unity导入编辑过的字体,中文部分已经和原字体对齐了。
实际的情况,可以根据需要甚至对英文字体进行大小缩放。

因为我对字体的编辑并不熟,在此仅靠取巧来解决这个问题了。

你可能感兴趣的:(记一次造字经历 - 用FontCreator解决Unity NGUI Label不同字体不同偏移问题)