Bug 63894 - Incorrect text wrap
Summary: Incorrect text wrap
Status: UNCONFIRMED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-07-04 02:07 PDT by Cameron Wong
Modified: 2011-07-05 00:15 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Cameron Wong 2011-07-04 02:07:56 PDT
Hello,

Here is the test code to reproduce the problem:
<html><body><div style='width:2px;border:solid 1px red'><span>0</span><span>&#27721;1</span></div></body></html>

In theory, the text should be wrapped before "&#27721". But Webkit wrap it after "&#27721".

I think the problem lies in function nextBreakablePosition in webcore/rendering/break_lines.cpp. nextBreakablePosition will never return index of 0, which it will break at least after the first character. However, it will not break at the end of an inline element, which may be because it is not certain that whether next character is &nbsp;

In function nextBreakablePosition, the initial value of lastCh is 0 if it's at the beginning of a RenderText.
    UChar lastCh = pos > 0 ? str[pos - 1] : 0;

I think passing the last character as an argument of this function will solve this problem. We can update the last character in RenderBlock::findNextLineBreak

What do you think?