终于明白pango的字体适配问题所在了
Pango是将字符段用Unicode码表来进行字体适配的。但这个码表的英文部分没有把数字和符号算在里边,也就是只有英文的大小写字母。所以,字符段中的英文字母可以正确映射到英文字体,数字和符号就被映射到了中文字体上。但似乎这个映射和渲染之间存在着诧异,经常会造成下一段字符的glyph位置计算出错。
比如图中,日期的部分,按照Pango现有的算法,里边只包含数字和符号,应该是被映射到中文字体上,但在渲染的时候又被映射到了英文字体上。造成了后续字符段(电子邮件地址)的问题,和前边的字符叠在一起了。 据说Pango HEAD里启用了新的字体映射算法,但我实在懒得弄jhbuild了。谁有兴趣编译一把?
cairo->glib->pango即可,有兴趣也可以玩玩gtk+。 这种效果实在是让人发疯:
在编辑框里输入数字:0123
紧接着属于一个字母:0123a
整行文字的字体都变了,大小长短都变了,好像发生了灵异事件。 最恐怖的是你用鼠标选中数字的话,数字的字体会变:shock: 强烈关注此案的进展 自己编译一把pango cvs HEAD就知道了。估计只有日月兄这种强人才有这种闲工夫:mrgreen: 自己编译一把pango cvs HEAD就知道了。估计只有日月兄这种强人才有这种闲工夫:mrgreen:
呵呵,的确我用的是 cvs head.
不过在 gentoo 里弄个真是太简单了;) 贴个图看看再说,看一下Sans这样的虚拟字体,重点是gedit这样对字体比较敏感的软件。
页:
[1]