Summary: | [test case] page rendered incorrectly at larger font sizes | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Rohan Dhruva <rohandhruva> |
Component: | khtml renderer | Assignee: | Konqueror Developers <konq-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | hkBst, kde |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | minimal page to reproduce the problem |
Description
Rohan Dhruva
2005-12-29 09:51:44 UTC
I am sorry i should have reported the component as khtml, not suyre how i can change it now. I can see the problem if I increase my font sizes. At 9pt, they show fine. Well, I noticed that the page renders correctly in kubuntu, using 3.5 packages available on kubuntu.org. Maybe they already have a patch/fix for this problem ? Works fine with current konqi. No, i still need to zoom minus one on arch .. which has xorg7 and kde 3.5.1 now. So does another friend using the same distro. Going from size 13 to minus one zoom level fixes it. This problem still exists in kde 3.5.1. I have not tried kde 3.5.2, since it is still in arch -testing not -extra. I will try it soon, and report back. This bug remails unresolved in kde 3.5.2. Also, now, reducing font to very small size doesnt help either. Ok, I can confirm that this does not work on debian, arch, and frugalware. On ubuntu, it worked since kde 3.4.2. Can someone please integrate the patch ? I will do little hunting and speaking, and post a link to the patch here. *** Bug 124831 has been marked as a duplicate of this bug. *** I've already corrected something like this before... reducing font size in kde 3.5.2 still helps. Actually I had to increase font size to get the erroneous behaviour, but I guess it all depends on what your usual fontsize is. Ah, yes, the kde 3.5.2 was a mistake on my part. Charles, can you please correct it yet once more ? :) Ironic the fact that a kde site cant display proper in konqi ;) But I am sure there are more such sites ? Bug confirmed, the rendering is still incorrect on konqueror in kde 3.5.3 :( Some love, please ? I get the same behavior in 3.5.4 built from gentoo packages. I first noticed the bug on http://kdemyths.urbanlizard.com/myth/42 and it seems to present differently for different font size. In fact, I do not think that the text disappears, it is just put to the wrong position, well right of the box. Created attachment 17651 [details]
minimal page to reproduce the problem
I ripped out everything from the webpage that did is not needed to reproduce on
my machine. What is left should be the minimum to reproduce the bug. Note that
by tuning the p:first-letter { margin-left: 1em; } parameter to a higher value,
the effect occurs on more than one paragraph, so if this does not reproduce the
bug try adjusting the font size or modifying this parameter.
SVN commit 590440 by charles: fix Bug 119167: page rendered incorrectly at larger font sizes see the comment within for info BUG:119167 now I'm gonna need to find some gauze and stop the blood from gushing out of my eyes and ears. M +10 -3 render_block.cpp --- branches/KDE/3.5/kdelibs/khtml/rendering/render_block.cpp #590439:590440 @@ -223,15 +223,22 @@ // punctuation and white-space if(oldText->l >= 1) { oldText->ref(); - unsigned int length = 0; + // begin: we need skip leading whitespace so that RenderBlock::findNextLineBreak + // won't think we're continuing from a previous run + unsigned int begin = 0; // the position that first-letter begins + unsigned int length = 0; // the position that "the rest" begins + while ( length < oldText->l && (oldText->s+length)->isSpace() ) + length++; + begin = length; while ( length < oldText->l && - ( (oldText->s+length)->isSpace() || (oldText->s+length)->isPunct()) ) + ( (oldText->s+length)->isPunct()) || (oldText->s+length)->isSpace() ) length++; if ( length < oldText->l && !( (oldText->s+length)->isSpace() || (oldText->s+length)->isPunct() )) length++; while ( length < oldText->l && (oldText->s+length)->isMark() ) length++; + // we need to generated a remainingText object even if no text is left // because it holds the place and style for the old textObj RenderTextFragment* remainingText = @@ -246,7 +253,7 @@ firstLetterContainer->addChild(remainingText, nextObj); RenderTextFragment* letter = - new (renderArena()) RenderTextFragment(remainingText->node(), oldText, 0, length); + new (renderArena()) RenderTextFragment(remainingText->node(), oldText, begin, length-begin); letter->setIsAnonymous( remainingText->isAnonymous() ); RenderStyle* newStyle = new RenderStyle(); newStyle->inheritFrom(pseudoStyle); Thanks for fixing this long standing bug :) |