mandrakechina 发表于 2005-11-7 21:39:24

终于明白pango的字体适配问题所在了

Pango是将字符段用Unicode码表来进行字体适配的。但这个码表的英文部分没有把数字和符号算在里边,也就是只有英文的大小写字母。

所以,字符段中的英文字母可以正确映射到英文字体,数字和符号就被映射到了中文字体上。但似乎这个映射和渲染之间存在着诧异,经常会造成下一段字符的glyph位置计算出错。

比如图中,日期的部分,按照Pango现有的算法,里边只包含数字和符号,应该是被映射到中文字体上,但在渲染的时候又被映射到了英文字体上。造成了后续字符段(电子邮件地址)的问题,和前边的字符叠在一起了。

mandrakechina 发表于 2005-11-14 17:41:50

据说Pango HEAD里启用了新的字体映射算法,但我实在懒得弄jhbuild了。谁有兴趣编译一把?

cairo->glib->pango即可,有兴趣也可以玩玩gtk+。

xLoneStar 发表于 2005-11-15 12:14:11

这种效果实在是让人发疯:

在编辑框里输入数字:0123
紧接着属于一个字母:0123a

整行文字的字体都变了,大小长短都变了,好像发生了灵异事件。

mandrakechina 发表于 2005-11-15 17:24:54

最恐怖的是你用鼠标选中数字的话,数字的字体会变:shock:

xLoneStar 发表于 2005-11-15 19:55:48

强烈关注此案的进展

mandrakechina 发表于 2005-11-15 20:05:48

自己编译一把pango cvs HEAD就知道了。估计只有日月兄这种强人才有这种闲工夫:mrgreen:

sunmoon1997 发表于 2005-11-15 20:55:40

自己编译一把pango cvs HEAD就知道了。估计只有日月兄这种强人才有这种闲工夫:mrgreen:
呵呵,的确我用的是 cvs head.
不过在 gentoo 里弄个真是太简单了;)

mandrakechina 发表于 2005-11-16 20:22:09

贴个图看看再说,看一下Sans这样的虚拟字体,重点是gedit这样对字体比较敏感的软件。
页: [1]
查看完整版本: 终于明白pango的字体适配问题所在了