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

中文字体出现偏上

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

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

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

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

对字体进行修改!

使用FontCreator编辑字体

FontCreator

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

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

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

重新计算度量范围:格式->字体设置->度量->计算

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

第二步:对中文字符偏移

选中所有中文

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

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

“工具->字形转换”,调整中文字体的位置

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

最终效果

“度量计算”+“中文向下偏移100”

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 111. [动画系统]如何将其他类型的动画转换成关键帧动画? 动画->点缓存->关键帧 112. [动画]Unit...
    胤醚貔貅阅读 14,513评论 3 89
  • 去年十月份改论文时,用matplotlib做图,生成pdf,插入到word文档中。但是需要把整个字体都嵌入到pdf...
    figs阅读 12,144评论 0 5
  • 一、概念 参考网页字体Serif和Sans-serif的区别及浏览器字体的设置CSS Font知识整理总结 1.F...
    合肥黑阅读 11,487评论 0 12
  • (1) ajax数据请求在项目中用到的频率会很高,所以对这些高频率组件进行封装,以便使用 r.detail的de...
    啥啥啥娜娜阅读 3,301评论 0 1
  • 前些天华为裁员风波闹得沸沸扬扬,被裁员的均为34岁以上的老员工。想想自己也混混沌沌的到了36岁的光景,赶紧上招聘网...
    俞创木阅读 1,651评论 0 2