不要改Qt。
如果直接改Qt的QfontEngine,在一些文本编辑器里,下划线就看不到了。
KHTML可以直接进行修改。
应该再将下划线下移两个像素,否则英文尾巴还是看不清楚!
不对, 英文应该是 baseline + 1, 中文是 descent。不要乱改。 对否?
--- kdelibs-3.3.2/khtml/rendering/font.cpp 2004-11-28 12:30:53.000000000 -0500
+++ kdelibs-3.3.2-new/khtml/rendering/font.cpp 2004-12-16 21:23:36.052694664 -0500
@@ -403,8 +403,8 @@
const int thickness = fm.height() > 20 ? fm.lineWidth() : 1;
const QBrush brush = pt->pen().color();
if (deco & UNDERLINE) {
- int underlineOffset = ( fm.height() + baseline ) / 2;
- if (underlineOffset <= baseline) underlineOffset = baseline+1;
+ int underlineOffset = ( fm.height() + baseline ) / 2+1;
+ if (underlineOffset <= baseline) underlineOffset = baseline+2;
pt->fillRect(_tx, _ty + underlineOffset, width + 1, thickness, brush );
}
--- kdelibs-3.3.2/khtml/rendering/render_line.cpp 2004-11-28 12:30:54.000000000 -0500
+++ kdelibs-3.3.2-new/khtml/rendering/render_line.cpp 2004-12-16 21:31:17.469548640 -0500
@@ -598,8 +598,8 @@
if (!parent())
object()->getTextDecorationColors(deco, underline, overline, linethrough);
if (deco & UNDERLINE) {
- int underlineOffset = ( fm.height() + m_baseline ) / 2;
- if (underlineOffset <= m_baseline) underlineOffset = m_baseline+1;
+ int underlineOffset = ( fm.height() + m_baseline ) / 2+1;
+ if (underlineOffset <= m_baseline) underlineOffset = m_baseline+2;
pI.p->fillRect(_tx, _ty + underlineOffset, w, thickness, underline );
}
我放几个个人的补丁出来吧:
1,在CSS Style中,部分网站使用=来赋值,比如www.it168.com。
一开始菜单都是展开的,因为用来等号,而不是冒号。
这个ugly的补丁,是解决这一类问题的:
http://www.magiclinux.org/people/cjacker/006-khtml-fix-css-property-use-equal.patch
2,我们都知道konqueror去浮动的窗口,比如sina, sohu, qq.com主页上随着你的滚动而飘动的窗口支持的不好,你能拖到那里,他就能浮动到哪里,你永远也点不到,而且页面拉的很长。
因为document.body.clientWidth和document.body.offsetHeight这两个属性错了。
http://www.magiclinux.org/people/cjacker/007-khtml-fix-DOM-IE-support.patch
这个补丁是解决这个问题的。
以后的浮动窗口就可以随你拖动,永远不会到屏幕外。
测试页面,电脑报首页,sina, sohu, tom等。
3,layer的属性是不被mozilla和IE支持的,只有netscape 4才支持正确的layer属性,所以,在一般情况下,作网页的胡乱设置layer属性,也没有问题,因为根本没有反应。
但是,konqueror做了支持,而且将它作为骄傲。
http://www.magiclinux.org/people/cjacker/011-khtml-remove-layer-parse.patch
这个补丁remove了layer属性的解析,按照市场需求来看,这么作是必要的,koqnueror开发者实在没有必要,用几个月时间实现这个支持。
测试页面,www.phoenixtv.com首页的视频窗口。
好东西哇,偷着乐:mrgreen:
页:
1
[2]