Closed
Bug 1115262
Opened 11 years ago
Closed 11 years ago
Ruby text is not positioned properly with vertical-rl writing mode
Categories
(Core :: Layout, defect)
Core
Layout
Tracking
()
RESOLVED
FIXED
mozilla38
People
(Reporter: xidorn, Assigned: xidorn)
References
(Blocks 1 open bug)
Details
Attachments
(2 files, 3 obsolete files)
|
9.95 KB,
image/png
|
Details | |
|
5.01 KB,
patch
|
jfkthame
:
review+
|
Details | Diff | Splinter Review |
No description provided.
| Assignee | ||
Comment 1•11 years ago
|
||
Attachment #8541116 -
Flags: review?(jfkthame)
Comment 2•11 years ago
|
||
Comment on attachment 8541116 [details] [diff] [review]
patch
Review of attachment 8541116 [details] [diff] [review]:
-----------------------------------------------------------------
This doesn't seem to apply to my current tree -- it must depend on another pending patch to nsRubyTextContainer to introduce/maintain the mLineSize member -- so I haven't actually tested it, but it looks like a reasonable thing to do. r+ if it makes things work. :)
::: layout/generic/nsRubyBaseContainerFrame.cpp
@@ +326,5 @@
>
> LogicalMargin borderPadding = reflowState->ComputedLogicalBorderPadding();
> + // If the writing mode is vertical-rl, the horizontal position of
> + // rt frames will be updated when reflowing this text container.
> + nscoord containerWidth = borderPadding.LeftRight(lineWM);
Given that the position will be set later, I think you could simply use a containerWidth of zero during the reflow here....
::: layout/generic/nsRubyTextContainerFrame.cpp
@@ +79,5 @@
> aDesiredSize.SetSize(lineWM, mLineSize);
> +
> + if (lineWM.IsVerticalRL()) {
> + LogicalMargin borderPadding = aReflowState.ComputedLogicalBorderPadding();
> + nscoord oldWidth = borderPadding.LeftRight(lineWM);
....and then oldWidth here would also be zero, so you can just eliminate it.
Attachment #8541116 -
Flags: review?(jfkthame) → review+
| Assignee | ||
Comment 3•11 years ago
|
||
(In reply to Jonathan Kew (:jfkthame) from comment #2)
> Comment on attachment 8541116 [details] [diff] [review]
> patch
>
> Review of attachment 8541116 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> This doesn't seem to apply to my current tree -- it must depend on another
> pending patch to nsRubyTextContainer to introduce/maintain the mLineSize
> member -- so I haven't actually tested it, but it looks like a reasonable
> thing to do. r+ if it makes things work. :)
This part of code, hmmm, is touched by both bug 1055665 and bug 1108429. They both have been pushed to m-i but haven't been merged to m-c. So, hopefully, you can apply this patch on top of the m-c tomorrow :)
> ::: layout/generic/nsRubyBaseContainerFrame.cpp
> @@ +326,5 @@
> >
> > LogicalMargin borderPadding = reflowState->ComputedLogicalBorderPadding();
> > + // If the writing mode is vertical-rl, the horizontal position of
> > + // rt frames will be updated when reflowing this text container.
> > + nscoord containerWidth = borderPadding.LeftRight(lineWM);
>
> Given that the position will be set later, I think you could simply use a
> containerWidth of zero during the reflow here....
>
> ::: layout/generic/nsRubyTextContainerFrame.cpp
> @@ +79,5 @@
> > aDesiredSize.SetSize(lineWM, mLineSize);
> > +
> > + if (lineWM.IsVerticalRL()) {
> > + LogicalMargin borderPadding = aReflowState.ComputedLogicalBorderPadding();
> > + nscoord oldWidth = borderPadding.LeftRight(lineWM);
>
> ....and then oldWidth here would also be zero, so you can just eliminate it.
I agree. Especially given that the border and padding code might be broken in other places for ruby boxes...
Comment 4•11 years ago
|
||
Hmm, in my testing this doesn't look quite right: it places the ruby glyphs immediately *outside* (to the right of) the <rtc> that should contain them, as shown by its border. (This is when testing on OS X, where bug 1107960 does not appear to be an issue; on some platforms, that could be confusing things further.)
Resetting to r? for now, to remind me to look into it again.
Updated•11 years ago
|
Attachment #8541116 -
Flags: review+ → review?(jfkthame)
| Assignee | ||
Updated•11 years ago
|
Summary: Ruby test is not positioned properly with vertical-rl writing mode → Ruby text is not positioned properly with vertical-rl writing mode
| Assignee | ||
Comment 5•11 years ago
|
||
(In reply to Jonathan Kew (:jfkthame) from comment #4)
> Hmm, in my testing this doesn't look quite right: it places the ruby glyphs
> immediately *outside* (to the right of) the <rtc> that should contain them,
> as shown by its border. (This is when testing on OS X, where bug 1107960
> does not appear to be an issue; on some platforms, that could be confusing
> things further.)
Hmm... it is possible that it is positioned correctly on Windows is the side effect of bug 1107960 :)
| Assignee | ||
Comment 6•11 years ago
|
||
Attachment #8541116 -
Attachment is obsolete: true
Attachment #8541116 -
Flags: review?(jfkthame)
Attachment #8544218 -
Flags: review?(jfkthame)
| Assignee | ||
Comment 7•11 years ago
|
||
I didn't see any problem in either Windows or Linux. Maybe some bug has been fixed since comment 4?
| Assignee | ||
Updated•11 years ago
|
Comment 8•11 years ago
|
||
I'm looking at http://people.mozilla.org/~jkew/ruby-demo.html with this patch, and still see problems with the positioning in the vertical-rl case.
Note that I've just pushed a number of patches to inbound that should improve the handling of font metrics in vertical mode. Let's re-test this once those are safely merged to central, and see how things look across various platforms.
| Assignee | ||
Comment 9•11 years ago
|
||
Fix one more place, then it works correctly with your testcase on Mac :)
But it still doesn't work quite good on Windows. :(
I guess there are still some problems on Windows on vertical text, especially something related to font metrics.
Attachment #8544218 -
Attachment is obsolete: true
Attachment #8544218 -
Flags: review?(jfkthame)
Attachment #8546400 -
Flags: review?(jfkthame)
| Assignee | ||
Comment 10•11 years ago
|
||
Comment on attachment 8546400 [details] [diff] [review]
patch
This doesn't seem to be correct...
Attachment #8546400 -
Flags: review?(jfkthame)
| Assignee | ||
Comment 11•11 years ago
|
||
It should work fine now, even on Windows :)
Attachment #8546400 -
Attachment is obsolete: true
Attachment #8546428 -
Flags: review?(jfkthame)
Comment 12•11 years ago
|
||
Comment on attachment 8546428 [details] [diff] [review]
patch
Review of attachment 8546428 [details] [diff] [review]:
-----------------------------------------------------------------
Yes, this appears to fix the vertical-rl problems. Some remaining issues I'm seeing are not vertical-rl-specific, but relate more generally to borders on ruby elements, which I guess will be covered in bug 1055667.
(Testcase at http://people.mozilla.org/~jkew/ruby-demo.html has been updated to allow experimentation with borders; provided they're set to zero, the ruby text is positioned as expected in all writing modes.)
Attachment #8546428 -
Flags: review?(jfkthame) → review+
| Assignee | ||
Comment 13•11 years ago
|
||
| Assignee | ||
Comment 14•11 years ago
|
||
Comment 15•11 years ago
|
||
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
You need to log in
before you can comment on or make changes to this bug.
Description
•