Hi Eric, <div><br></div><div>comments inline:<br><br><div class="gmail_quote">On Wed, Sep 22, 2010 at 6:57 AM, Eric Mader <span dir="ltr">&lt;<a href="mailto:emader@apple.com">emader@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div style="word-wrap:break-word"><br><div><div class="im"><div>On Sep 20, 2010, at 9:52 PM, Roland Steiner wrote:</div><blockquote type="cite"><div class="gmail_quote"><div>Oh vey, that&#39;s ambituous! :)  There&#39;s so many corner cases I foresee on this one that I was just too happy to postpone it when we originally discussed to leave out CSS3 ruby stuff from the initial implementation, which is purely based off HTML5 - including supporting multiple base/text pairs within a single ruby, and line-breaking within the ruby.</div>

</div></blockquote><div>Yes, it&#39;s a bit scary. ;-) I don&#39;t think I could implement the whole thing at once, so I&#39;m looking at doing a partial implementation. Maybe the first round would only check to be sure that the neighboring blocks aren&#39;t &lt;ruby&gt; blocks.</div>

</div></div></div></blockquote><div><br></div><div>I would actually suggest cutting it down further and at first doing it only where the neighbor is plain text - this should still catch 90% of the cases where you&#39;d want overhang and should vastly reduce the corner cases. You can verify and compute this rather easily when layouting the ruby, and you&#39;d not need to worry about different glyph heights of neighboring inline elements, or about replaced elements interfering. Overhang would be basically be the minimum of: maximum overhang, or length of neighboring text run, or available/remaining space on the line. The latter factor may also cause you to need to break the ruby or move it to the next line altogether.</div>

<div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div>I&#39;m looking at using a RenderOverflow object to implement this. Can you point me at any documentation for this class, other than what&#39;s in the code? I&#39;m having some trouble sorting out what all the various rectangles used in conjunction with this object represent.</div>

</div></blockquote><div><br></div><div>I have to say I&#39;m not personally familiar with RenderOverflow, either (haven&#39;t used it with ruby). Just judging from the description it stores overflow rectangles for stuff that is actual content (layout overflow) and stuff that is pure &quot;cosmetic rendering&quot;, such as shadows or reflections (visual overflow). For ruby overhang you&#39;d be looking at layout overflow in principle (unless the overhang text also has shadows and stuff, which may add to the visual overflow), AFAICT. But as I said, I&#39;m not really an expert here.</div>

<div><br></div><div><br></div><div>Cheers,</div><div><br></div><div>- Roland</div></div><br></div>