[webkit-dev] mfenced - more MathML questions

Alex Milowski alex at milowski.org
Wed Sep 9 08:16:00 PDT 2009

On Tue, Sep 8, 2009 at 4:30 PM, Alex Milowski<alex at milowski.org> wrote:
> The problem of nested fences is much more tricky.  I thought I had a handle on
> this with the only odd thing being the need to adjust the fence size after
> a layout pass.  You can see this code in the patch [1] and specifically
> by looking and RenderFenced.cpp in [2].
> I've been able to make it behave a bit better by calling setHeight() with the
> fence height online #205.  It still has trouble laying out the the open and
> close fences and often overlaps the line boxes.

I've been able to make some progress on nested mfenced.  The problem is a bit
more general in that:

   * any nested complicated construct (e.g. a mtable) has the same issue.
   * inline mathml embedded in a sentence with mfenced sometimes fails.

I was able to fix the specific situation of mfenced nested in an mfenced by
another call to RenderBlock::layout() directly within my layout() method
instance.  Unfortunately, doing that for an mtable nested in an mfenced (e.g.
a matrix) makes things worse.

I believe the core issue is that the whole layout is invalidated by the resizing
of the fencing.  I need to do this after the height of the contents is
determined.  Is there a way to determine the height of a contained RenderObject
instance without going through the whole layout?  If I could do that, I
could adjust the height of the fences and then call layout.

Also, I've been wrapping content in anonymous rendering objects to aid in
my adjustments and layout.  Do you think it would be to my advantage to
wrap the contents that is fenced with an anonymous inline block?

Otherwise, I need a way to say: "This whole subtree is now invalid as I resized
content before and after it".

I am very close.  I have been able to load and render most of my MA thesis.  If
I fix the fencing, it will work for that document!

--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

Bertrand Russell in a footnote of Principles of Mathematics

More information about the webkit-dev mailing list