exdev / ex2d-dev

2D framework and pipeline for Unity3D
ex-dev.com/ex2d
GNU General Public License v3.0
6 stars 3 forks source link

exSpriteFont 中根据 exTextUtility 提供的方法,构建字体Mesh,并支持 MultiLine 渲染。 #58

Closed jwu closed 10 years ago

jwu commented 10 years ago

请根据 exTextUtility.CalcTextLine 中的方法构建字体Mesh。 我希望在此 Issue 之前能够先完成 #56 的改动。

希望 exSpriteFont 能够加入 wordSpacing, letterSpacing, lineHeight 和 wrapMode 四个参数。并支持 Multi-line 渲染

之所以需要这些改动是因为,In Game GUI 里需要一个简单的multi-line wrap 功能。

jareguo commented 10 years ago

@jwu 我觉得lineHeight改成lineSpacing更简单一点,不是吗?一般为0就行了。

jwu commented 10 years ago

@tinytail

line-height 主要是参考 css 标准来定的: http://www.w3school.com.cn/css/pr_dim_line-height.asp 之所以会这么定义主要是取决于 line-spacing 为0时,两行之间的间隔究竟取什么这个问题。我们默认是取 font-size,但是其实 font-size 并不能真正代表字的行间距,更详细的解释文档参考这篇: http://dbaron.org/css/2000/01/dibm

不过,最简单直白的理由来说明为什么用 line-height 而不用 line-spacing 是出于动画插值考虑。如果你看过一些 web 页面做压缩展开的动画你会发现,做法中不乏有 line-height 从 0 -> original line-height 这种手法。如果是 line-spacing, 这样的插值需要写 -original height -> original line-spacing,对于程序员,在写插值时就会想,我到底要关注什么?而设计师设计时时明白 line-height, font-size 之间的关系,所以他明白如何填写 line-height,使他要么等于他(设计师)定义的字体的 font-size,要么大于/小于 他几个 px

jareguo commented 10 years ago

有道理