QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4703|回复: 33

对这个bug怎么看?

[复制链接]
发表于 2006-1-23 10:39:51 | 显示全部楼层 |阅读模式
大家对这个bug怎么看,尤其是日月兄不能袖手旁观    
http://bugzilla.gnome.org/show_bug.cgi?id=321113
发表于 2006-1-23 15:35:45 | 显示全部楼层
我能理解这位仁兄的意思。但这不解决问题,数字和标点符号的字体会随着你的输入而发生突变,这不是一个可以接受的方案。

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

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

btw, 是否需要我去跟帖?
回复

使用道具 举报

 楼主| 发表于 2006-1-23 15:46:48 | 显示全部楼层
可以啊,赶快再投几票。

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

使用道具 举报

发表于 2006-1-24 21:50:14 | 显示全部楼层
这个问题的确很烦人.....

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

使用道具 举报

 楼主| 发表于 2006-1-25 00:05:29 | 显示全部楼层
不行。必须在所有的字体设置中设置为实际字体,不能是Sans这样的虚拟字体族。
回复

使用道具 举报

发表于 2006-1-25 13:27:44 | 显示全部楼层
将中文字体优先级向上提,使无论中英文都使用同一个字体,应该可以解决。但这样一来就失去了虚拟字体的功能,不能中文一个字体、英文另一个字体,而中文字体附带的西文符号往往很难看。

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

使用道具 举报

 楼主| 发表于 2006-1-25 14:22:40 | 显示全部楼层
一个非常Dirty的Patch是,将Pango将Sans映射到实际字体之前,先通过fontconfig将Sans替换为实际字体。
回复

使用道具 举报

发表于 2006-1-25 22:29:50 | 显示全部楼层
将Pango将Sans映射到实际字体之前,先通过fontconfig将Sans替换为实际字体。
这个上游肯定不能接受
回复

使用道具 举报

发表于 2006-1-26 00:37:40 | 显示全部楼层
要不,Mandrake 兄先简介一下 Pango 的字体匹配机制,如何?
回复

使用道具 举报

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

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

使用道具 举报

发表于 2006-1-26 02:24:20 | 显示全部楼层
目前还没有见过……有什么办法可以再现?
回复

使用道具 举报

 楼主| 发表于 2006-1-26 03:38:21 | 显示全部楼层
将字体设置为Sans这样的虚拟字体族,而不是具体的字体。
回复

使用道具 举报

发表于 2006-1-26 10:48:34 | 显示全部楼层
[quote:702f66046b="mandrakechina"]将字体设置为Sans这样的虚拟字体族,而不是具体的字体。[/quote]

条件不足

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 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)

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

使用道具 举报

 楼主| 发表于 2006-1-26 11:46:25 | 显示全部楼层
1. 此问题必须在zh_CN.GB*下重现。
2. 你的Firefox不是gtk/pango的。这是pango的firefox得出的结果[code:1][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)[/code:1]
可以看到,firefox和x11和xft都没有关系,因为它是pango直接到cairo的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 05:10 , Processed in 0.046356 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表