mandrakechina 发表于 2006-1-23 10:39:51

对这个bug怎么看?

大家对这个bug怎么看,尤其是日月兄不能袖手旁观:twisted::twisted:
http://bugzilla.gnome.org/show_bug.cgi?id=321113

xLoneStar 发表于 2006-1-23 15:35:45

我能理解这位仁兄的意思。但这不解决问题,数字和标点符号的字体会随着你的输入而发生突变,这不是一个可以接受的方案。

虽然我非常反对闭门造车,但如果 pango 的人甚至不愿意认真看一下这个问题,我将转而支持我们中文发型版共同维护一个不被上游接受的补丁,该补丁提供一个开关控制公共字符的字体是否随上下文变化,默认为“是”。

我非常想知道 Owen Taylor 怎么看待这个问题,因为他对此应该有一些见解。

btw, 是否需要我去跟帖?

mandrakechina 发表于 2006-1-23 15:46:48

可以啊,赶快再投几票。

我也认为,像Pango这样的底层库,应该避免受其它环境影响,一致性和稳定性比友好性要更加重要。

x11_yao 发表于 2006-1-24 21:50:14

这个问题的确很烦人.....

现在(在还没有patch可打的情况下)是不是可以把中文字体在fontconf里的位置提前,通过优先选中文字体里的符号暂时避开这个突变。

mandrakechina 发表于 2006-1-25 00:05:29

不行。必须在所有的字体设置中设置为实际字体,不能是Sans这样的虚拟字体族。

xLoneStar 发表于 2006-1-25 13:27:44

将中文字体优先级向上提,使无论中英文都使用同一个字体,应该可以解决。但这样一来就失去了虚拟字体的功能,不能中文一个字体、英文另一个字体,而中文字体附带的西文符号往往很难看。

这个补丁我想,要做的话,只需让 Pango 将标点符号都当作西文字符对待就行了吧,是不是这样?

mandrakechina 发表于 2006-1-25 14:22:40

一个非常Dirty的Patch是,将Pango将Sans映射到实际字体之前,先通过fontconfig将Sans替换为实际字体。

再见情人 发表于 2006-1-25 22:29:50


将Pango将Sans映射到实际字体之前,先通过fontconfig将Sans替换为实际字体。

这个上游肯定不能接受
:lol:

xLoneStar 发表于 2006-1-26 00:37:40

要不,Mandrake 兄先简介一下 Pango 的字体匹配机制,如何?

mandrakechina 发表于 2006-1-26 01:22:09

pango是根据fontconfig得出的字体覆盖范围以及Unicode字符范围二者进行适配的。比如A这个字母,Unicode会认为这个字母位于lang:en这个语言范围内,那么就从fontconfig中挑选lang:en的第一个候选字体,作为最终适配结果。但数字和半角标点符号不属于任何一个lang范围,Unicode认为这些字符是所有语言公用的,在这种情况下pango会直接调用fontconfig而不带lang参数,这时fontconfig会返回适合当前locale的字体,也就是中文字体。

现在的问题是,为什么数字和半角符号的字体根据上下文不断的变,这个让人很烦。

cobranail 发表于 2006-1-26 02:24:20

目前还没有见过……有什么办法可以再现?

mandrakechina 发表于 2006-1-26 03:38:21

将字体设置为Sans这样的虚拟字体族,而不是具体的字体。

dlz_cn 发表于 2006-1-26 10:48:34

将字体设置为Sans这样的虚拟字体族,而不是具体的字体。

条件不足

dlz_cn 发表于 2006-1-26 11:01:46

我这儿那个页面上的 EN 全都用了中文字体里面的字。

上面那个截图是一款流传于 BBS 间的字体,内有 tahoma 和 simun。
本人系统中并没有单独的 tahoma 字体。

$ ldd firefox-bin| grep pango
        libpangoxft-1.0.so.0 => /usr/lib/libpangoxft-1.0.so.0 (0xb7a80000)
        libpangox-1.0.so.0 => /usr/lib/libpangox-1.0.so.0 (0xb7a75000)
        libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb7a3e000)
        libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb7342000)
        libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb72ca000)

无法重新你上面说的那个现象

mandrakechina 发表于 2006-1-26 11:46:25

1. 此问题必须在zh_CN.GB*下重现。
2. 你的Firefox不是gtk/pango的。这是pango的firefox得出的结果[fundawang@localhost ~]$ ldd /usr/lib/mozilla-firefox-1.5/mozilla-firefox-bin | grep pango
      libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb7b71000)
      libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb7b32000)
      libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb759a000)
可以看到,firefox和x11和xft都没有关系,因为它是pango直接到cairo的。
页: [1] 2 3
查看完整版本: 对这个bug怎么看?