[webkit-dev] Build Errors on Mac OS

2010-11-29 Thread Eric Mader
Hi,

I'm trying to build TOT (as of an hour or so ago) on Mac OS. I'm getting a 
bunch of compile errors in WebKit2Shared/mac/SandboxExtensionMac.mm. The 
compiler can't find any of the WKSandBoxExtensionXXX symbols (e.g. 
WKSandboxExtensionInvalidate). What do I need to do to fix this?

Regards,
Eric Madefr

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Build Errors on Mac OS

2010-11-29 Thread Eric Mader
Thanks Dan!

Regards,
Eric

On Nov 29, 2010, at 11:32 AM, Dan Bernstein wrote:

 
 On Nov 29, 2010, at 1:18 PM, Eric Mader wrote:
 
 Hi,
 
 I'm trying to build TOT (as of an hour or so ago) on Mac OS. I'm getting a 
 bunch of compile errors in WebKit2Shared/mac/SandboxExtensionMac.mm. The 
 compiler can't find any of the WKSandBoxExtensionXXX symbols (e.g. 
 WKSandboxExtensionInvalidate). What do I need to do to fix this?
 
 I’ve responded to Eric off-list, as this is something that only pertains to 
 people who work at Apple.
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


[webkit-dev] Fwd: Size Of Ruby Text?

2010-11-04 Thread Eric Mader
Argh… sent from the wrong alias again...Begin forwarded message:From: webkit-dev-ow...@lists.webkit.orgSubject: Re: [webkit-dev] Size Of Ruby Text?Date: November 4, 2010 9:56:21 AM HSTTo: mader_e...@apple.comYou must be subscribed in order to post to this mailing list.From: Eric Mader mader_e...@apple.comSubject: Re: [webkit-dev] Size Of Ruby Text?Date: November 4, 2010 9:54:42 AM HSTTo: Roland Steiner rolandstei...@google.comCc: Yasuo Kida k...@apple.com, WebKit Development webkit-dev@lists.webkit.orgHere's Kida-san's example as displayed with my local ruby changes:(hope the image makes it all the way to the list)This includes my early line-stacking changes. Notice that the ruby text (in "ruby" red ;-) overlaps the previous line - my code doesn't check to see if the ruby overlaps the pervious line or spills outside of the frame's top bounds.The inter-character spacing is better, but not perfect. My overhang code needs to add inter-character spacing to the base text if the ruby text is wider and can't overlap its neighbors.What were were discussing below is the space between the base text and the ruby text. The ruby text should be closer to the base text. As you can see above, it's getting laid out as if it were just a previous line.Regards,EricOn Nov 3, 2010, at 9:35 PM, Roland Steiner wrote:FWIW, since Eric is working on ruby overhang, AFAIK, white space should become much less pronounced. I therefore would personally opt for more legible ruby characters (read: 8px or 9px) over whitespace worries.

Cheers,- RolandOn Thu, Nov 4, 2010 at 8:05 AM, Yasuo Kida k...@apple.com wrote:

Right. It is partly because webkit currently does not use glyphs that are designed for ruby. I would not worry this too much as with 14px many kanjis are only barely legible in anyway without the context. The lower bound for ruby can be 8px for base 16px = 12pt in 96dpi. I am reluctant to raise it to 9 px.

It would be more important to keep the 50% ratio until we hit the threshold to avoid too many white spaces between base characters.- kida

[snip]
___webkit-dev mailing listwebkit-dev@lists.webkit.orghttp://lists.webkit.org/mailman/listinfo.cgi/webkit-dev___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


[webkit-dev] Size Of Ruby Text?

2010-11-03 Thread Eric Mader
Hi,

As part of my work on ruby text enhancements, I'm implementing the option of 
not counting the height of the ruby text in the overall line height. As part of 
this, I wanted to play with changing the size of the ruby text. I'm trying to 
do this by changing the following lines in WebKit/WebCore/css/html.css:

ruby  rt {
display: block;
font-size: 60%; /* make slightly larger than 50% for better readability */
text-align: center;
text-decoration: none;
}

However, when I change the font-size: attribute to, say, 50%, I don't see any 
difference in the size of the ruby text. (I even tried 25% just to be sure). Is 
this value being set somewhere else?

Regards,
Eric Mader

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Size Of Ruby Text?

2010-11-03 Thread Eric Mader

On Nov 3, 2010, at 8:56 AM, David Hyatt wrote:

 WebKit enforces a minimum font size of 9px when no explicit font size is 
 specified.  This means that the font for rt cannot fall below 9px if it is 
 relative to the user agent default.  It may be that we want to consider 
 modifying this minimum for ruby text and allow it to go below 9px though.  
 I'm not sure.

Yes, that's probably what I'm seeing. I'm using default font size, which is 
probably 12pt.

 If you make a really big Ruby (e.g., ruby style=font-size:96px and then 
 modify the font-size percentage on the rt, you should be able to see it 
 take effect.
 
 We should probably just study real-world Japanese examples to see how small 
 Ruby typically is allowed to get.  If it can go below 9px and still be 
 readable, we should perhaps consider allowing that.

I'm sure the detailed spec. addresses this issue. I'll review it.

 In terms of excluding Ruby text from the overall line height, I don't think 
 the font-size of the rt is particularly relevant.  You just want to hack 
 the Ruby to turn the ruby text into overflow rather than having it be part of 
 the overall height of the inline-block.

Of course. The website I was using has the line height set too tight for 
correct display this way, and I just wanted to try a smaller size to see if it 
looked better. OTOH, that site loads a style sheet that overrides the ruby text 
font-size to 6pt, so I can't easily override it, and its' probably displaying 
as 9pt anyhow.

 dave
 (hy...@apple.com)

Regards,
Eric

 On Nov 3, 2010, at 1:20 PM, Eric Mader wrote:
 
 Hi,
 
 As part of my work on ruby text enhancements, I'm implementing the option of 
 not counting the height of the ruby text in the overall line height. As part 
 of this, I wanted to play with changing the size of the ruby text. I'm 
 trying to do this by changing the following lines in 
 WebKit/WebCore/css/html.css:
 
 ruby  rt {
 display: block;
 font-size: 60%; /* make slightly larger than 50% for better readability 
 */
 text-align: center;
 text-decoration: none;
 }
 
 However, when I change the font-size: attribute to, say, 50%, I don't see 
 any difference in the size of the ruby text. (I even tried 25% just to be 
 sure). Is this value being set somewhere else?
 
 Regards,
 Eric Mader
 
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
 

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Ruby Text Enhancements

2010-10-06 Thread Eric Mader

On Oct 5, 2010, at 6:25 PM, David Hyatt wrote:

 On Oct 5, 2010, at 7:33 PM, Eric Mader wrote:
 
 
 On Sep 24, 2010, at 8:02 PM, David Hyatt wrote:
 
 This is a tough problem.  It seems like you have to get involved in the 
 line layout code e.g., findNextLineBreak in order to really do the right 
 thing.  findNextLineBreak uses an iterator that walks the objects, so it's 
 easier to tell what text came before you and what text comes after you.  
 You can also tell whether or not that text will even fit on the line and 
 possibly do the margin hacking there.
 
 I just did a prototype that checks for a RenderRubyRun in the isReplaced() 
 code inside findNextLineBreak and calls a method on the RenderRubyRun that 
 takes the last and the next object and sets negative margins by calling 
 setMarginLeft() and setMarginRight(). I stepped through this code and it 
 computes the correct margins, but the margins don't seem to take - the ruby 
 doesn't overlap the surrounding text.
 
 Guessing that some other code is resetting the margins, I modified the code 
 to cache the computed margins in the RenderRubyRun object and return the 
 cached values through subclassed marginLeft() and marginRight() methods. 
 With this change, the ruby displays as I would expect.
 
 It's probably RenderBlockLineLayout line 348 getting you in trouble 
 (computeInlineDirectionPositionsForLine).  computeLogicalWidth is called 
 again, and that will recompute the left/right margins and blow away the 
 changes you made to them.  I have no idea why that call is there.  It should 
 not be necessary, but maybe there's something subtle I'm missing.  You could 
 try removing it, and see if that fixes the problem (it should).

Yes, that did the trick! I haven't noticed any obvious problems with that line 
removed, but I haven't done much testing yet.

 dave
 (hy...@apple.com)

Regards,
Eric___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Upgrading VS (WAS: Any objections to switching to Xcode 3.2.4 or newer?)

2010-10-06 Thread Eric Mader

On Oct 6, 2010, at 5:13 PM, Jeremy Orlow wrote:

 2) Any Windows based WebKit hackers needing to upgrade their Visual 
 Studio...which would require $$?  [1]

Could we use the Visual Studio Express Editions? They're free.

Regards,
Eric___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Ruby Text Enhancements

2010-10-05 Thread Eric Mader

On Sep 24, 2010, at 8:02 PM, David Hyatt wrote:

 This is a tough problem.  It seems like you have to get involved in the line 
 layout code e.g., findNextLineBreak in order to really do the right thing.  
 findNextLineBreak uses an iterator that walks the objects, so it's easier to 
 tell what text came before you and what text comes after you.  You can also 
 tell whether or not that text will even fit on the line and possibly do the 
 margin hacking there.

I just did a prototype that checks for a RenderRubyRun in the isReplaced() code 
inside findNextLineBreak and calls a method on the RenderRubyRun that takes the 
last and the next object and sets negative margins by calling setMarginLeft() 
and setMarginRight(). I stepped through this code and it computes the correct 
margins, but the margins don't seem to take - the ruby doesn't overlap the 
surrounding text.

Guessing that some other code is resetting the margins, I modified the code to 
cache the computed margins in the RenderRubyRun object and return the cached 
values through subclassed marginLeft() and marginRight() methods. With this 
change, the ruby displays as I would expect.

Does anybody have any idea what code resetting the margins, and what I need to 
do to talk it out of doing this?

Regards,
Eric


___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Ruby Text Enhancements

2010-09-28 Thread Eric Mader

On Sep 28, 2010, at 7:11 AM, David Hyatt wrote:

 The ruby element allows one or more spans of phrasing content to be marked 
 with ruby annotations.
 
 * That the text for the ruby text and ruby base are always the direct 
 child of the RenderRubyText and RenderRubyBase object.
 
 I doubt that's a valid assumption.  I assume that you can have a content 
 tree of markup underneath a RenderRubyText and a RenderRubyBase, e.g., if 
 you put in some i and some b.  Anyway, I think you could just ask for 
 the width() of the rubyText() and rubyBase() objects themselves rather than 
 drilling down into their subtrees.
 
 I couldn't figure out how to ask the RenderRubyText and RenderRubyRun 
 objects for their width. They don't support the width() method. What method 
 should I call?
 
 
 They should.  They are RenderBlocks, so they should have width() methods.  
 You may have just been getting bad results because you hooked in before the 
 width was computed.  That's why computeLogicalWidth subclassing would work 
 better for you.  Let the base class set up the margins and width, and then 
 you override.

Doh! I was trying to call width() on RenderText objects. When I called it 
directly on firstChild() and lastChild() of the RenderRubyRun, it works, but 
returns the frame width, which isn't useful for my purposes. Instead I called 
maxPrefWidth() which has the values I'm after. (only, I guess, if the ruby text 
and ruby base is a single line…)

 dave
 (hy...@apple.com)

Regards,
Eric

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Ruby Text Enhancements

2010-09-27 Thread Eric Mader
A generic question: is there any in-depth documentation I can ready about block 
layout and how the various methods are supposed to be used? I've looked at the 
technical articles at http://webkit.org/coding/technical-articles.html but they 
seem to only have fairly high-level information and left me hungry for much 
more.

Specific comments below.

Regards,
Eric

On Sep 24, 2010, at 8:02 PM, David Hyatt wrote:

 It would probably be simpler to just subclass computeLogicalWidth (recently 
 renamed from calcWidth) and modify the m_marginLeft and m_marginRight 
 variables after calling the base class method.  Then you don't have to add 
 any new member variables.
 
 The big problem with building the overhang into margins at the initial 
 calculation time, though, is that you may not get a relayout when objects 
 around you change, so you won't get an opportunity to adjust your margins 
 when that happens.  Your margins are also computed before you've even know 
 what's going on the line, so it could be really tricky to have all the 
 information you need.

Are you saying that subclassing computeLogicalWidth() would still mean that I'm 
computing the margins at the initial calculation time?

 It just doesn't seem like you can deal with all the corner cases without 
 integrating right into line layout.  I don't see how else you can know if you 
 have adequate available space to actually overhang without knowing what 
 you've seen so far on the line and how much space you have left on the line.

This would require special-casing the ruby blocks in line layout code, right? I 
was trying to avoid this, hoping that I could just extend the existing ruby 
objects.

 This method makes several assumptions that I'm not 100% sure are always 
 safe:
 * That a RenderRuby object holds only 1 RenderRubyRun object.
 
 I believe you can have multiple RenderRubyRuns inside a single RenderRuby.
 
 http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-ruby-element
 
 The ruby element allows one or more spans of phrasing content to be marked 
 with ruby annotations.
 
 * That the text for the ruby text and ruby base are always the direct child 
 of the RenderRubyText and RenderRubyBase object.
 
 I doubt that's a valid assumption.  I assume that you can have a content tree 
 of markup underneath a RenderRubyText and a RenderRubyBase, e.g., if you put 
 in some i and some b.  Anyway, I think you could just ask for the width() 
 of the rubyText() and rubyBase() objects themselves rather than drilling down 
 into their subtrees.

I couldn't figure out how to ask the RenderRubyText and RenderRubyRun objects 
for their width. They don't support the width() method. What method should I 
call?


___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


[webkit-dev] Fwd: Ruby Text Enhancements

2010-09-24 Thread Eric Mader
Sent from the wrong email alias...

Begin forwarded message:

 From: webkit-dev-ow...@lists.webkit.org
 Subject: Re: [webkit-dev] Ruby Text Enhancements
 Date: September 24, 2010 1:55:19 PM HST
 To: mader_e...@apple.com
 
 You must be subscribed in order to post to this mailing list.
 
 
 From: Eric Mader mader_e...@apple.com
 Subject: Re: [webkit-dev] Ruby Text Enhancements
 Date: September 24, 2010 1:55:15 PM HST
 To: Roland Steiner rolandstei...@google.com
 Cc: David Hyatt hy...@apple.com, WebKit Development 
 webkit-dev@lists.webkit.org, Yasuo Kida k...@apple.com
 
 
 I have prototyped something that seems to more-or-less work. Here's what I 
 did:
 
 1) Changed RenderRubyRun to subclass these methods:
 virtual int marginTop() const;
 virtual int marginBottom() const;
 virtual int marginLeft() const;
 virtual int marginRight() const;
 
 
 2) added these members to RenderRubyRun:
 mutable bool m_haveHorizontalMargins;
 mutable int m_leftMargin;
 mutable int m_rightMargin;
 
 3) Added this private method to  RenderRubyRun:
 void getHorizontalMargins() const;
 
 4) Here's what marginLeft() and MarginRight() look like:
 int RenderRubyRun::marginLeft() const
 {
 getHorizontalMargins();
 
 return m_leftMargin;
 }
 
 int RenderRubyRun::marginRight() const
 {
 getHorizontalMargins();
 
 return m_rightMargin;
 }
 
 And here's getHorizontalMargins():
 void RenderRubyRun::getHorizontalMargins() const
 {
 if (m_haveHorizontalMargins) {
 return;
 }
 
 RenderText* rubyRenderText = static_castRenderText* 
 (rubyText()-firstChild());
 RenderText* baseRenderText = static_castRenderText* 
 (rubyBase()-firstChild());
 int rubyLength = rubyRenderText-firstTextBox()-width();
 int baseLength = baseRenderText-firstTextBox()-width();
 int leftMargin = RenderBlock::marginLeft();
 int rightMargin = RenderBlock::marginRight();
 
 if (baseLength  rubyLength) {
 RenderObject* prevSibling = parent()-previousSibling();
 RenderObject* nextSibling = parent()-nextSibling();
 bool prevIsText = prevSibling  prevSibling-isText();
 bool nextIsText = nextSibling  nextSibling-isText();
 
 // FIXME: handle odd difference?
 if (prevIsText)
 leftMargin += (baseLength - rubyLength) / 2;
 
 if (nextIsText)
 rightMargin += (baseLength - rubyLength) / 2;
 }
 
 m_leftMargin = leftMargin;
 m_rightMargin = rightMargin;
 m_haveHorizontalMargins = true;
 
 }
 
 This method makes several assumptions that I'm not 100% sure are always safe:
 * That a RenderRuby object holds only 1 RenderRubyRun object.
 * That the text for the ruby text and ruby base are always the direct child 
 of the RenderRubyText and RenderRubyBase object.
 * That the neighboring text is always a direct sibling of the RenderRuby 
 object.
 
 One enhancement I know is needed is to look at successive neighboring objects 
 to make sure that there's enough text there that the overhanging part of the 
 ruby text doesn't overshoot the neighbor(s) as well and bump into something 
 it can't overlap.
 
 Does this general approach look right?
 
 Regards,
 Eric Mader
 
 On Sep 22, 2010, at 12:59 PM, Eric Mader wrote:
 
 
 On Sep 21, 2010, at 7:16 PM, Roland Steiner wrote:
 
 Hi Eric, 
 
 comments inline:
 
 On Wed, Sep 22, 2010 at 6:57 AM, Eric Mader ema...@apple.com wrote:
 
 On Sep 20, 2010, at 9:52 PM, Roland Steiner wrote:
 Oh vey, that's ambituous! :)  There'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.
 Yes, it's a bit scary. ;-) I don't think I could implement the whole thing 
 at once, so I'm looking at doing a partial implementation. Maybe the first 
 round would only check to be sure that the neighboring blocks aren't ruby 
 blocks.
 
 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'd want overhang and should vastly reduce the corner cases. You 
 can verify and compute this rather easily when layouting the ruby, and 
 you'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.
 
 I'll look at this idea too. What do I need to do to find the neighboring 
 inline elements?
 
 I'm looking at using a RenderOverflow object to implement this. Can you 
 point me at any

Re: [webkit-dev] Ruby Text Enhancements

2010-09-22 Thread Eric Mader

On Sep 21, 2010, at 7:16 PM, Roland Steiner wrote:

 Hi Eric, 
 
 comments inline:
 
 On Wed, Sep 22, 2010 at 6:57 AM, Eric Mader ema...@apple.com wrote:
 
 On Sep 20, 2010, at 9:52 PM, Roland Steiner wrote:
 Oh vey, that's ambituous! :)  There'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.
 Yes, it's a bit scary. ;-) I don't think I could implement the whole thing at 
 once, so I'm looking at doing a partial implementation. Maybe the first round 
 would only check to be sure that the neighboring blocks aren't ruby blocks.
 
 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'd want overhang and should vastly reduce the corner cases. You can 
 verify and compute this rather easily when layouting the ruby, and you'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.

I'll look at this idea too. What do I need to do to find the neighboring inline 
elements?

 I'm looking at using a RenderOverflow object to implement this. Can you point 
 me at any documentation for this class, other than what's in the code? I'm 
 having some trouble sorting out what all the various rectangles used in 
 conjunction with this object represent.
 
 I have to say I'm not personally familiar with RenderOverflow, either 
 (haven'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 cosmetic rendering, such as shadows or reflections 
 (visual overflow). For ruby overhang you'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'm not really an expert here.

I've been looking at RenderOverflow, and I'm beginning to suspect that it's not 
the best way to proceed. Now I'm thinking that the negative margins are the way 
to go. My guess is that I need to set the margins on either the RenderRubyRun 
object or perhaps the RenderRuby object itself. To compute the correct margins, 
it looks to me like I'll need to access the widths of the RenderRubyText and 
RenderRubyBase objects. So far, I haven't been able to work out how to do that. 
Any clues would be greatly appreciated.

 Cheers,
 
 - Roland

Regards,
Eric

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] Ruby Text Enhancements

2010-09-21 Thread Eric Mader

On Sep 20, 2010, at 9:52 PM, Roland Steiner wrote:

 Great to see someone else interested in doing ruby implementation! :) 
 
 I did the original ruby implementation, so I'm very happy to help with any 
 questions/problems/issues (bugs? there are not bugs!). BTW, please note that 
 there is another ruby patch in the review pipeline: 
 https://bugs.webkit.org/show_bug.cgi?id=41040 (had to modify and re-submit 
 this one after in-flight clashes with another patch) that might affect the 
 implementation.
 
 On Tue, Sep 21, 2010 at 3:12 AM, David Hyatt hy...@apple.com wrote:
 On Sep 17, 2010, at 8:07 PM, Eric Mader wrote:
 
  Hi,
 
  I'm working on making the following enhancements to Ruby Text:
 
  1) Implement the behavior of ruby-overhang:auto
 
 Oh vey, that's ambituous! :)  There'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.

Yes, it's a bit scary. ;-) I don't think I could implement the whole thing at 
once, so I'm looking at doing a partial implementation. Maybe the first round 
would only check to be sure that the neighboring blocks aren't ruby blocks.

I'm looking at using a RenderOverflow object to implement this. Can you point 
me at any documentation for this class, other than what's in the code? I'm 
having some trouble sorting out what all the various rectangles used in 
conjunction with this object represent.

  2) implement the behavior of ruby-line-stacking:exclude-ruby
 
 Which way do you intend to implement this? AFAICT the current consensus seems 
 to go towards having ruby included by default rather than excluded.

Well, the spec. says that exclude-ruby is the default. Looking at a few example 
sites, it seems that they don't use big enough inter-line spacing to 
accommodate ruby text, so changing the exclude-ruby as the default would result 
in the ruby overlapping the previous line, which is probably worse than the 
current state where the inter-line spacing isn't uniform. (using 60% as the 
default size for ruby text probably makes this a bit worse)

As ruby implementations with the specified default implemented become more 
common, I expect that sites will be updated to use correct inter-line spacing 
and everyone will be happy. In the near-term, though, things will look worse if 
we implement the default...

  3) Add some Mac OS specific character properties to the ruby text
 
  4) Turn off the underline when the ruby text is in a link
 
  I've looked at the code enough to know that the layout or ruby text is done 
  by the normal block stacking in BlockLayout. I'm guessing that I can do at 
  lest the first two tasks by changing the RenderRuby code to report a 
  different width and / or height for the ruby block. Does this seem like the 
  right way to do what I want?
 
  Assuming for the moment that it is, I have some questions:
 
  1) What methods should I subclass to report the adjusted width and height?
 
 
 I'm very hazy on the Ruby implementation.  I believe it makes an inline-block 
 with two block children vertically stacked, and then it uses 
 text-align:center to center the ruby base.  If so, this behavior has to be 
 preserved when the ruby text is wider than the base.
 
 Yes, that's the basic layout for a single ruby text/base pair. Note that 
 multiple such pairs may be contained within a single ruby element (which is 
 normally an inline element, unless it's floated or positioned). A ruby may 
 also include renderers for :before and :after content, which are outside of 
 the inline-blocks for base/text pairs. This is implemented in the 
 aforementioned patch for 41040, which also fixes some issues with 
 RenderRubyAsBlock and supersedes the patch for 43722).
  
 I think a reasonable way to implement overhang therefore would be with 
 negative margins applied to the ruby run.  This way the correct layout of the 
 Ruby object is preserved, and the surrounding text will just naturally get 
 pushed inside the Ruby object to overlap it.
 
 Basically you can compare the delta in width between the base and the text 
 and then apply margins to either side of the ruby run based off how you want 
 to overhang.
 
 That's also what I'd suggest. However, there are the following additional 
 things to consider:

See my comments about RenderOverflow above. Is that the right way to go? Do I 
set the width of the ruby block to the width of the base text, or to the 
width of the ruby text and then give it the appropriate margins?

 
  About turning off the underline if the ruby is in a link: I've looked at 
  the styles and tried adding code to change the parts that I think relate to 
  this, but haven't found anything that makes a difference. It's also 
  occurred to me that I might be able to do this by writing

[webkit-dev] Ruby Text Enhancements

2010-09-17 Thread Eric Mader
Hi,

I'm working on making the following enhancements to Ruby Text:

1) Implement the behavior of ruby-overhang:auto

2) implement the behavior of ruby-line-stacking:exclude-ruby

3) Add some Mac OS specific character properties to the ruby text

4) Turn off the underline when the ruby text is in a link

I've looked at the code enough to know that the layout or ruby text is done by 
the normal block stacking in BlockLayout. I'm guessing that I can do at lest 
the first two tasks by changing the RenderRuby code to report a different width 
and / or height for the ruby block. Does this seem like the right way to do 
what I want?

Assuming for the moment that it is, I have some questions:

1) What methods should I subclass to report the adjusted width and height?

2) If the ruby text is wider than the ruby base and I report the width of the 
base as the width of the whole block will some of the ruby text get clipped, or 
will it all still draw?

3) Ruby text is only allowed to overhang the base in some cases. To know when 
it's OK, I'll need to examine the neighboring text. Can I always find the 
neighboring text by walking the render tree?

About turning off the underline if the ruby is in a link: I've looked at the 
styles and tried adding code to change the parts that I think relate to this, 
but haven't found anything that makes a difference. It's also occurred to me 
that I might be able to do this by writing a rule in 
WebKitWebCore/css/html.css, but I can't figure out exactly what the rule 
would look like. I tried adding text-decoration: none to the ruby  rt 
section, but that doesn't do it.

(at first, I thought that is was probably overkill, but now I think that 
turning text-decoration off for all ruby text is probably right.)

Regards,
Eric Mader

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev