bamfox 发表于 2004-12-16 21:06:15

这个下划线补丁,好像不能用在 kde-3.3.2 上哇。

sunmoon1997 发表于 2004-12-16 21:39:41

下划线的主要问题在于KHTML中。

不要改Qt。

如果直接改Qt的QfontEngine,在一些文本编辑器里,下划线就看不到了。

KHTML可以直接进行修改。
应该再将下划线下移两个像素,否则英文尾巴还是看不清楚!
不对, 英文应该是 baseline + 1, 中文是 descent。不要乱改。

bamfox 发表于 2004-12-16 22:05:36

对否?

--- 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 );
         }

cjacker 发表于 2004-12-17 09:05:00

我放几个个人的补丁出来吧:

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首页的视频窗口。



bamfox 发表于 2004-12-17 14:49:22

好东西哇,偷着乐:mrgreen:
页: 1 [2]
查看完整版本: 打过下划线补丁的kde效果图