On Wed, Sep 9, 2009 at 2:17 PM, David Hyatt<hyatt@apple.com> wrote:
I guess that might make the fence too tall if something outside of it is taller than what's inside. You may have to just drill into your children line boxes in order to compute your top and your bottom position. We don't really have the concept of caching "line top" and "line bottom" except on the root line box....
I think what throws this off is the width of the fence changes as I scale the font size. That causes the whole layout to need to "shift". In some instances I can get that to work but I can't seem to get it to consistently work. When I move to glyph stacking, the width will be fixed and I'll be able to determine that when I create the fences (pre-layout). Unfortunately, there are plenty of places where I'll need to change the width of something and that will cause the same problem. For example: <munder> <mo>→</mo> <!-- right arrow --> <mtext>maps to</mtext> </munder> The arrow is considered "stretchy" and should be stretched slightly longer then the rendered width of the text in 'mtext'. Again, you'd lay this out vertically and then check the maximum width. Afterwards, you'd stretch the operator (right arrow) to the desired width by stacking glyphs left-to-right. That will cause the next item in the flow to need to be repositioned and that is the same problem I'm having. I can do this in javascript manually and so there must be some way to say: "It is now invalid from here forward and so re-layout the following tree" ? -- --Alex Milowski "The excellence of grammar as a guide is proportional to the paucity of the inflexions, i.e. to the degree of analysis effected by the language considered." Bertrand Russell in a footnote of Principles of Mathematics