On Jun 1, 2010, at 10:48 PM, Xiaomei Ji wrote:
>
> Given a DOM Node and an InlineBox, is there a way to convert the character
> offset within this InlineBox to a VisiblePosition? considering bidi/RTL.
Not sure how being given a DOM node helps here…
>
> Using <span> node in the following example as an example:
> <div contenteditable dir=rtl>abc ששש def <span dir=ltr>שנב abc סטז</span> uvw
> זזז xyz</div>
> Assume the <span> node is node A, using "(node, offset)a" to represent the
> node and offset information of Position when caret is before character "a",
> the position information are:
> ...... (A, 4)a(A, 5)b(A, 6)c(A, 7) (A, 0xb)ז(A, 0xa)ט(A, 9)ס(A, 8).
>
> Given the <span> node, the InlineBox representing " abc "(with surrounding
> spaces), and character offset 5 within the InlineBox, is there a way to
> convert offset 5 into VisiblePosition (A, 0xb) (not (A, 8))? which means when
> caret is placed after the 2nd space in " abc ", the visible position is (A,
> 0xb).
I don’t think there’s code to do this—hit testing code will just choose the DOM
offset that corresponds to the line box you hit—but how about something like
this?
If the offset is not at the edge of the text box, then just map it to that
box’s text node
Otherwise, if there is an adjacent text box on that edge, and it has the same
direction as the first text box, just map to the first text box’s text node
(or, perhaps you should look at the bidi levels of both boxes and choose the
one with the higher level?)
Otherwise, of the two adjacent text boxes, choose the one whose direction is
equal to the block direction, and return an offset into the chosen box’s text
node, corresponding to the edge
Does this cover all cases?
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev