Bug 21479 - Embellished operators - add rules for mstyle, mphantom, mpadded and mrow. r=karlt
authorFrédéric Wang <fred.wang@free.fr>
Fri, 25 Mar 2011 16:38:59 +1300
changeset 63990 109cfae74006375f4e6c36670ae7a62024456dff
parent 63989 af4d2d0c6a862fd8975626fb4b560ea45a2b71fb
child 63991 a593739bfbca317edce92dc0a10894035c80691d
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskarlt
bugs21479
milestone2.2a1pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 21479 - Embellished operators - add rules for mstyle, mphantom, mpadded and mrow. r=karlt
layout/mathml/nsIMathMLFrame.h
layout/mathml/nsMathMLContainerFrame.cpp
layout/mathml/nsMathMLContainerFrame.h
layout/mathml/nsMathMLFrame.h
layout/mathml/nsMathMLTokenFrame.h
layout/mathml/nsMathMLmactionFrame.cpp
layout/mathml/nsMathMLmactionFrame.h
layout/mathml/nsMathMLmpaddedFrame.h
layout/mathml/nsMathMLmphantomFrame.h
layout/mathml/nsMathMLmrowFrame.h
layout/mathml/nsMathMLmspaceFrame.h
layout/mathml/nsMathMLmstyleFrame.cpp
layout/reftests/mathml/embellished-op-1-1-ref.html
layout/reftests/mathml/embellished-op-1-1.html
layout/reftests/mathml/embellished-op-1-2-ref.html
layout/reftests/mathml/embellished-op-1-2.html
layout/reftests/mathml/embellished-op-1-3-ref.html
layout/reftests/mathml/embellished-op-1-3.html
layout/reftests/mathml/embellished-op-1-4-ref.html
layout/reftests/mathml/embellished-op-1-4.html
layout/reftests/mathml/embellished-op-1-5-ref.html
layout/reftests/mathml/embellished-op-1-5.html
layout/reftests/mathml/embellished-op-2-1-ref.html
layout/reftests/mathml/embellished-op-2-1.html
layout/reftests/mathml/embellished-op-2-2-ref.html
layout/reftests/mathml/embellished-op-2-2.html
layout/reftests/mathml/embellished-op-2-3-ref.html
layout/reftests/mathml/embellished-op-2-3.html
layout/reftests/mathml/embellished-op-2-4-ref.html
layout/reftests/mathml/embellished-op-2-4.html
layout/reftests/mathml/embellished-op-3-1-ref.html
layout/reftests/mathml/embellished-op-3-1.html
layout/reftests/mathml/embellished-op-3-2-ref.html
layout/reftests/mathml/embellished-op-3-2.html
layout/reftests/mathml/embellished-op-3-3-ref.html
layout/reftests/mathml/embellished-op-3-3.html
layout/reftests/mathml/embellished-op-3-4-ref.html
layout/reftests/mathml/embellished-op-3-4.html
layout/reftests/mathml/embellished-op-3-5-ref.html
layout/reftests/mathml/embellished-op-3-5.html
layout/reftests/mathml/embellished-op-4-1-ref.html
layout/reftests/mathml/embellished-op-4-1.html
layout/reftests/mathml/embellished-op-4-2-ref.html
layout/reftests/mathml/embellished-op-4-2.html
layout/reftests/mathml/embellished-op-4-3-ref.html
layout/reftests/mathml/embellished-op-4-3.html
layout/reftests/mathml/embellished-op-5-1.html
layout/reftests/mathml/embellished-op-5-2.html
layout/reftests/mathml/embellished-op-5-ref.html
layout/reftests/mathml/reftest.list
--- a/layout/mathml/nsIMathMLFrame.h
+++ b/layout/mathml/nsIMathMLFrame.h
@@ -16,16 +16,17 @@
  *
  * The Initial Developer of the Original Code is
  * The University Of Queensland.
  * Portions created by the Initial Developer are Copyright (C) 1999
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Roger B. Sidje <rbs@maths.uq.edu.au>
+ *   Frederic Wang <fred.wang@free.fr>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either of the GNU General Public License Version 2 or later (the "GPL"),
  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
@@ -61,16 +62,19 @@ enum eMathMLFrameType {
 };
 
 // Abstract base class that provides additional methods for MathML frames
 class nsIMathMLFrame
 {
 public:
   NS_DECL_QUERYFRAME_TARGET(nsIMathMLFrame)
 
+  // helper to check whether the frame is "space-like", as defined by the spec.
+  virtual PRBool IsSpaceLike() = 0;
+
  /* SUPPORT FOR PRECISE POSITIONING */
  /*====================================================================*/
  
  /* Metrics that _exactly_ enclose the text of the frame.
   * The frame *must* have *already* being reflowed, before you can call
   * the GetBoundingMetrics() method.
   * Note that for a frame with nested children, the bounding metrics
   * will exactly enclose its children. For example, the bounding metrics
@@ -318,16 +322,19 @@ struct nsPresentationData {
 // horizontal stretch command on all their non-empty children
 #define NS_MATHML_STRETCH_ALL_CHILDREN_HORIZONTALLY   0x00000008U
 
 // This bit is set if the frame has the explicit attribute
 // displaystyle="true" or "false". It is only relevant to <mstyle> and <mtable>
 // because they are the only tags where the attribute is allowed by the spec.
 #define NS_MATHML_EXPLICIT_DISPLAYSTYLE               0x00000020U
 
+// This bit is set if the frame is "space-like", as defined by the spec.
+#define NS_MATHML_SPACE_LIKE                          0x00000040U
+
 // This bit is set when the frame cannot be formatted due to an
 // error (e.g., invalid markup such as a <msup> without an overscript).
 // When set, a visual feedback will be provided to the user.
 #define NS_MATHML_ERROR                               0x80000000U
 
 // a bit used for debug
 #define NS_MATHML_STRETCH_DONE                        0x20000000U
 
@@ -349,16 +356,19 @@ struct nsPresentationData {
   (NS_MATHML_STRETCH_ALL_CHILDREN_VERTICALLY == ((_flags) & NS_MATHML_STRETCH_ALL_CHILDREN_VERTICALLY))
 
 #define NS_MATHML_WILL_STRETCH_ALL_CHILDREN_HORIZONTALLY(_flags) \
   (NS_MATHML_STRETCH_ALL_CHILDREN_HORIZONTALLY == ((_flags) & NS_MATHML_STRETCH_ALL_CHILDREN_HORIZONTALLY))
 
 #define NS_MATHML_HAS_EXPLICIT_DISPLAYSTYLE(_flags) \
   (NS_MATHML_EXPLICIT_DISPLAYSTYLE == ((_flags) & NS_MATHML_EXPLICIT_DISPLAYSTYLE))
 
+#define NS_MATHML_IS_SPACE_LIKE(_flags) \
+  (NS_MATHML_SPACE_LIKE == ((_flags) & NS_MATHML_SPACE_LIKE))
+
 #define NS_MATHML_HAS_ERROR(_flags) \
   (NS_MATHML_ERROR == ((_flags) & NS_MATHML_ERROR))
 
 #define NS_MATHML_STRETCH_WAS_DONE(_flags) \
   (NS_MATHML_STRETCH_DONE == ((_flags) & NS_MATHML_STRETCH_DONE))
 
 #define NS_MATHML_PAINT_BOUNDING_METRICS(_flags) \
   (NS_MATHML_SHOW_BOUNDING_METRICS == ((_flags) & NS_MATHML_SHOW_BOUNDING_METRICS))
--- a/layout/mathml/nsMathMLContainerFrame.cpp
+++ b/layout/mathml/nsMathMLContainerFrame.cpp
@@ -19,16 +19,17 @@
  * Portions created by the Initial Developer are Copyright (C) 1999
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Roger B. Sidje <rbs@maths.uq.edu.au>
  *   David J. Fiddes <D.J.Fiddes@hw.ac.uk>
  *   Pierre Phaneuf <pp@ludusdesign.com>
  *   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
+ *   Frederic Wang <fred.wang@free.fr>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either of the GNU General Public License Version 2 or later (the "GPL"),
  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
@@ -1460,16 +1461,90 @@ nsMathMLContainerFrame::DidReflowChildre
         DidReflowChildren(grandchild, nsnull);
 
       frame->DidReflow(frame->PresContext(), nsnull,
                        NS_FRAME_REFLOW_FINISHED);
     }
   }
 }
 
+// helper used by mstyle, mphantom, mpadded and mrow in their implementations
+// of TransmitAutomaticData().
+nsresult
+nsMathMLContainerFrame::TransmitAutomaticDataForMrowLikeElement()
+{
+  //
+  // One loop to check both conditions below:
+  //
+  // 1) whether all the children of the mrow-like element are space-like.
+  //
+  //   The REC defines the following elements to be "space-like":
+  //   * an mstyle, mphantom, or mpadded element, all of whose direct
+  //     sub-expressions are space-like;
+  //   * an mrow all of whose direct sub-expressions are space-like.
+  //
+  // 2) whether all but one child of the mrow-like element are space-like and
+  //    this non-space-like child is an embellished operator.
+  //
+  //   The REC defines the following elements to be embellished operators:
+  //   * one of the elements mstyle, mphantom, or mpadded, such that an mrow
+  //     containing the same arguments would be an embellished operator;
+  //   * an mrow whose arguments consist (in any order) of one embellished
+  //     operator and zero or more space-like elements.
+  //
+  nsIFrame *childFrame, *baseFrame;
+  PRBool embellishedOpFound = PR_FALSE;
+  nsEmbellishData embellishData;
+  
+  for (childFrame = GetFirstChild(nsnull);
+       childFrame;
+       childFrame = childFrame->GetNextSibling()) {
+    nsIMathMLFrame* mathMLFrame = do_QueryFrame(childFrame);
+    if (!mathMLFrame) break;
+    if (!mathMLFrame->IsSpaceLike()) {
+      if (embellishedOpFound) break;
+      baseFrame = childFrame;
+      GetEmbellishDataFrom(baseFrame, embellishData);
+      if (!NS_MATHML_IS_EMBELLISH_OPERATOR(embellishData.flags)) break;
+      embellishedOpFound = PR_TRUE;
+    }
+  }
+
+  if (!childFrame) {
+    // we successfully went to the end of the loop. This means that one of
+    // condition 1) or 2) holds.
+    if (!embellishedOpFound) {
+      // the mrow-like element is space-like.
+      mPresentationData.flags |= NS_MATHML_SPACE_LIKE;
+    } else {
+      // the mrow-like element is an embellished operator.
+      // let the state of the embellished operator found bubble to us.
+      mPresentationData.baseFrame = baseFrame;
+      mEmbellishData = embellishData;
+    }
+  }
+
+  if (childFrame || !embellishedOpFound) {
+    // The element is not embellished operator
+    mPresentationData.baseFrame = nsnull;
+    mEmbellishData.flags = 0;
+    mEmbellishData.coreFrame = nsnull;
+    mEmbellishData.direction = NS_STRETCH_DIRECTION_UNSUPPORTED;
+    mEmbellishData.leftSpace = 0;
+    mEmbellishData.rightSpace = 0;
+  }
+
+  if (childFrame || embellishedOpFound) {
+    // The element is not space-like
+    mPresentationData.flags &= ~NS_MATHML_SPACE_LIKE;
+  }
+
+  return NS_OK;
+}
+
 //==========================
 
 nsIFrame*
 NS_NewMathMLmathBlockFrame(nsIPresShell* aPresShell, nsStyleContext* aContext,
                            PRUint32 aFlags)
 {
   nsMathMLmathBlockFrame* it = new (aPresShell) nsMathMLmathBlockFrame(aContext);
   if (it) {
--- a/layout/mathml/nsMathMLContainerFrame.h
+++ b/layout/mathml/nsMathMLContainerFrame.h
@@ -19,16 +19,17 @@
  * Portions created by the Initial Developer are Copyright (C) 1999
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Roger B. Sidje <rbs@maths.uq.edu.au>
  *   David J. Fiddes <D.J.Fiddes@hw.ac.uk>
  *   Shyjan Mahamud <mahamud@cs.cmu.edu> (added TeX rendering rules)
  *   Karl Tomlinson <karlt+@karlt.net>, Mozilla Corporation
+ *   Frederic Wang <fred.wang@free.fr>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either of the GNU General Public License Version 2 or later (the "GPL"),
  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
@@ -251,16 +252,21 @@ protected:
   // helper to get the preferred size that a container frame should use to fire
   // the stretch on its stretchy child frames.
   void
   GetPreferredStretchSize(nsIRenderingContext& aRenderingContext,
                           PRUint32             aOptions,
                           nsStretchDirection   aStretchDirection,
                           nsBoundingMetrics&   aPreferredStretchSize);
 
+  // helper used by mstyle, mphantom, mpadded and mrow in their implementation
+  // of TransmitAutomaticData() to determine whether they are space-like.
+  nsresult
+  TransmitAutomaticDataForMrowLikeElement();
+
 public:
   // error handlers to provide a visual feedback to the user when an error
   // (typically invalid markup) was encountered during reflow.
   nsresult
   ReflowError(nsIRenderingContext& aRenderingContext,
               nsHTMLReflowMetrics& aDesiredSize);
 
   // helper method to reflow a child frame. We are inline frames, and we don't
--- a/layout/mathml/nsMathMLFrame.h
+++ b/layout/mathml/nsMathMLFrame.h
@@ -54,16 +54,21 @@
 class nsMathMLChar;
 
 // Concrete base class with default methods that derived MathML frames can override
 class nsMathMLFrame : public nsIMathMLFrame {
 public:
 
   // nsIMathMLFrame ---
 
+  virtual PRBool
+  IsSpaceLike() {
+    return NS_MATHML_IS_SPACE_LIKE(mPresentationData.flags);
+  }
+
   NS_IMETHOD
   GetBoundingMetrics(nsBoundingMetrics& aBoundingMetrics) {
     aBoundingMetrics = mBoundingMetrics;
     return NS_OK;
   }
 
   NS_IMETHOD
   SetBoundingMetrics(const nsBoundingMetrics& aBoundingMetrics) {
--- a/layout/mathml/nsMathMLTokenFrame.h
+++ b/layout/mathml/nsMathMLTokenFrame.h
@@ -47,16 +47,26 @@
 //
 
 class nsMathMLTokenFrame : public nsMathMLContainerFrame {
 public:
   NS_DECL_FRAMEARENA_HELPERS
 
   friend nsIFrame* NS_NewMathMLTokenFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 
+  NS_IMETHOD
+  TransmitAutomaticData() {
+    // The REC defines the following elements to be space-like:
+    // * an mtext, mspace, maligngroup, or malignmark element;
+    if (mContent->Tag() == nsGkAtoms::mtext_) {
+      mPresentationData.flags |= NS_MATHML_SPACE_LIKE;
+    }
+    return NS_OK;
+  }
+
   virtual eMathMLFrameType GetMathMLFrameType();
 
   NS_IMETHOD
   Init(nsIContent*      aContent,
        nsIFrame*        aParent,
        nsIFrame*        aPrevInFlow);
 
   NS_IMETHOD
--- a/layout/mathml/nsMathMLmactionFrame.cpp
+++ b/layout/mathml/nsMathMLmactionFrame.cpp
@@ -157,16 +157,37 @@ nsMathMLmactionFrame::Init(nsIContent*  
       }
     }
   }
 
   // Let the base class do the rest
   return nsMathMLContainerFrame::Init(aContent, aParent, aPrevInFlow);
 }
 
+NS_IMETHODIMP
+nsMathMLmactionFrame::TransmitAutomaticData() {
+  // The REC defines the following element to be space-like:
+  // * an maction element whose selected sub-expression exists and is
+  //   space-like;
+  nsIMathMLFrame* mathMLFrame = do_QueryFrame(mSelectedFrame);
+  if (mathMLFrame && mathMLFrame->IsSpaceLike()) {
+    mPresentationData.flags |= NS_MATHML_SPACE_LIKE;
+  } else {
+    mPresentationData.flags &= ~NS_MATHML_SPACE_LIKE;
+  }
+
+  // The REC defines the following element to be an embellished operator:
+  // * an maction element whose selected sub-expression exists and is an
+  //   embellished operator;
+  mPresentationData.baseFrame = mSelectedFrame;
+  GetEmbellishDataFrom(mSelectedFrame, mEmbellishData);
+
+  return NS_OK;
+}
+
 nsresult
 nsMathMLmactionFrame::ChildListChanged(PRInt32 aModType)
 {
   // update cached values
   mChildCount = -1;
   mSelection = 0;
   mSelectedFrame = nsnull;
   GetSelectedFrame();
@@ -212,21 +233,16 @@ nsMathMLmactionFrame::GetSelectedFrame()
   }
   // cater for invalid user-supplied selection
   if (selection > count || selection < 1) 
     selection = 1;
 
   mChildCount = count;
   mSelection = selection;
 
-  // if the selected child is an embellished operator,
-  // we become embellished as well
-  mPresentationData.baseFrame = mSelectedFrame;
-  GetEmbellishDataFrom(mSelectedFrame, mEmbellishData);
-
   return mSelectedFrame;
 }
 
 NS_IMETHODIMP
 nsMathMLmactionFrame::SetInitialChildList(nsIAtom*        aListName,
                                           nsFrameList&    aChildList)
 {
   nsresult rv = nsMathMLContainerFrame::SetInitialChildList(aListName, aChildList);
--- a/layout/mathml/nsMathMLmactionFrame.h
+++ b/layout/mathml/nsMathMLmactionFrame.h
@@ -48,16 +48,19 @@
 
 class nsMathMLmactionFrame : public nsMathMLContainerFrame {
 public:
   NS_DECL_FRAMEARENA_HELPERS
 
   friend nsIFrame* NS_NewMathMLmactionFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 
   NS_IMETHOD
+  TransmitAutomaticData();
+
+  NS_IMETHOD
   Init(nsIContent*      aContent,
        nsIFrame*        aParent,
        nsIFrame*        aPrevInFlow);
 
   NS_IMETHOD
   SetInitialChildList(nsIAtom*        aListName,
                       nsFrameList&    aChildList);
 
--- a/layout/mathml/nsMathMLmpaddedFrame.h
+++ b/layout/mathml/nsMathMLmpaddedFrame.h
@@ -53,16 +53,21 @@ public:
   NS_DECL_FRAMEARENA_HELPERS
 
   friend nsIFrame* NS_NewMathMLmpaddedFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 
   NS_IMETHOD
   InheritAutomaticData(nsIFrame* aParent);
 
   NS_IMETHOD
+  TransmitAutomaticData() {
+    return TransmitAutomaticDataForMrowLikeElement();
+  }
+
+  NS_IMETHOD
   Reflow(nsPresContext*          aPresContext,
          nsHTMLReflowMetrics&     aDesiredSize,
          const nsHTMLReflowState& aReflowState,
          nsReflowStatus&          aStatus);
   
   virtual nsresult
   Place(nsIRenderingContext& aRenderingContext,
         PRBool               aPlaceOrigin,
--- a/layout/mathml/nsMathMLmphantomFrame.h
+++ b/layout/mathml/nsMathMLmphantomFrame.h
@@ -51,16 +51,21 @@ class nsMathMLmphantomFrame : public nsM
 public:
   NS_DECL_FRAMEARENA_HELPERS
 
   friend nsIFrame* NS_NewMathMLmphantomFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 
   NS_IMETHOD
   InheritAutomaticData(nsIFrame* aParent);
 
+  NS_IMETHOD
+  TransmitAutomaticData() {
+    return TransmitAutomaticDataForMrowLikeElement();
+  }
+
   NS_IMETHOD BuildDisplayList(nsDisplayListBuilder*   aBuilder,
                               const nsRect&           aDirtyRect,
                               const nsDisplayListSet& aLists) { return NS_OK; }
 
 protected:
   nsMathMLmphantomFrame(nsStyleContext* aContext)
     : nsMathMLContainerFrame(aContext) {}
   virtual ~nsMathMLmphantomFrame();
--- a/layout/mathml/nsMathMLmrowFrame.h
+++ b/layout/mathml/nsMathMLmrowFrame.h
@@ -56,16 +56,21 @@ public:
   NS_IMETHOD
   AttributeChanged(PRInt32  aNameSpaceID,
                    nsIAtom* aAttribute,
                    PRInt32  aModType);
 
   NS_IMETHOD
   InheritAutomaticData(nsIFrame* aParent);
 
+  NS_IMETHOD
+  TransmitAutomaticData() {
+    return TransmitAutomaticDataForMrowLikeElement();
+  }
+
 protected:
   nsMathMLmrowFrame(nsStyleContext* aContext) : nsMathMLContainerFrame(aContext) {}
   virtual ~nsMathMLmrowFrame();
 
   virtual PRIntn GetSkipSides() const { return 0; }
 };
 
 #endif /* nsMathMLmrowFrame_h___ */
--- a/layout/mathml/nsMathMLmspaceFrame.h
+++ b/layout/mathml/nsMathMLmspaceFrame.h
@@ -47,16 +47,24 @@
 //
 
 class nsMathMLmspaceFrame : public nsMathMLContainerFrame {
 public:
   NS_DECL_FRAMEARENA_HELPERS
 
   friend nsIFrame* NS_NewMathMLmspaceFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 
+  NS_IMETHOD
+  TransmitAutomaticData() {
+    // The REC defines the following elements to be space-like:
+    // * an mtext, mspace, maligngroup, or malignmark element;
+    mPresentationData.flags |= NS_MATHML_SPACE_LIKE;
+    return NS_OK;
+  }
+
   virtual PRBool IsLeaf() const;
 
   NS_IMETHOD
   Reflow(nsPresContext*          aPresContext,
          nsHTMLReflowMetrics&     aDesiredSize,
          const nsHTMLReflowState& aReflowState,
          nsReflowStatus&          aStatus);
   
--- a/layout/mathml/nsMathMLmstyleFrame.cpp
+++ b/layout/mathml/nsMathMLmstyleFrame.cpp
@@ -79,22 +79,17 @@ nsMathMLmstyleFrame::InheritAutomaticDat
   nsMathMLFrame::FindAttrDisplaystyle(mContent, mPresentationData);
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsMathMLmstyleFrame::TransmitAutomaticData()
 {
-  // Nothing particular to do here, the values that we computed in
-  // InheritAutomaticData() are the values that we wanted to pass to
-  // our children. Our children would have inherited these values in
-  // their own InheritAutomaticData() as we descended the frame tree.
-
-  return NS_OK;
+  return TransmitAutomaticDataForMrowLikeElement();
 }
 
 // displaystyle and scriptlevel are special in <mstyle>...
 // Since UpdatePresentation() and UpdatePresentationDataFromChildAt() can be called
 // by a parent, ensure that the explicit attributes of <mstyle> take precedence
 NS_IMETHODIMP
 nsMathMLmstyleFrame::UpdatePresentationData(PRUint32        aFlagsValues,
                                             PRUint32        aWhichFlags)
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-1-ref.html
@@ -0,0 +1,20 @@
+<html>
+  <head>
+    <title>embellished operators 1: maction</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- maction whose selected child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <maction actiontype="toggle" selection="2">
+            <mo stretchy="false">&#xaf;</mo>
+            <mo stretchy="false">&#xaf;</mo>
+          </maction>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-1.html
@@ -0,0 +1,20 @@
+<html>
+  <head>
+    <title>embellished operators 1: maction</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- maction whose selected child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <maction actiontype="toggle" selection="2">
+            <mo stretchy="false">&#xaf;</mo>
+            <mo>&#xaf;</mo>
+          </maction>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-2-ref.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 1: mrow</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mrow whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mo stretchy="false">&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-2.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 1: mrow</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mrow whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mo>&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-3-ref.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 1: mstyle</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mstyle whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mstyle><mo stretchy="false">&#xaf;</mo></mstyle>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-3.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 1: mstyle</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mstyle whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mstyle><mo>&#xaf;</mo></mstyle>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-4-ref.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 1: mpadded</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mpadded whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mpadded><mo stretchy="false">&#xaf;</mo></mpadded>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-4.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 1: mpadded</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mpadded whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mpadded><mo>&#xaf;</mo></mpadded>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-5-ref.html
@@ -0,0 +1,21 @@
+<html>
+  <head>
+    <title>embellished operators 1: mphantom</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mphantom whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mtext>g</mtext>
+            <mphantom><mo stretchy="false">&#xaf;</mo></mphantom>
+            <mtext>h</mtext>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-1-5.html
@@ -0,0 +1,21 @@
+<html>
+  <head>
+    <title>embellished operators 1: mphantom</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- mphantom whose child is embellished op -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mtext>g</mtext>
+            <mphantom><mo>&#xaf;</mo></mphantom>
+            <mtext>h</mtext>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-1-ref.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- first child space-like -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mtext>g</mtext><mo stretchy="false">&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-1.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- first child space-like -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mtext>g</mtext><mo>&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-2-ref.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- last child space-like -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mo stretchy="false">&#xaf;</mo><mtext>g</mtext></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-2.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- last child space-like -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mo>&#xaf;</mo><mtext>g</mtext></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-3-ref.html
@@ -0,0 +1,21 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- first and last children space-like -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mtext>g</mtext>
+            <mo stretchy="false">&#xaf;</mo>
+            <mtext>h</mtext>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-3.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- first and last children space-like -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mtext>g</mtext><mo>&#xaf;</mo><mtext>h</mtext></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-4-ref.html
@@ -0,0 +1,25 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- many space-like children -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mspace/>
+            <mtext>g</mtext>
+            <mspace/>
+            <mo stretchy="false">&#xaf;</mo>
+            <mspace/>
+            <mspace/>
+            <mtext>h</mtext>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-2-4.html
@@ -0,0 +1,25 @@
+<html>
+  <head>
+    <title>embellished operators: ignore space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- many space-like children -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mspace/>
+            <mtext>g</mtext>
+            <mspace/>
+            <mo>&#xaf;</mo>
+            <mspace/>
+            <mspace/>
+            <mtext>h</mtext>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-1-ref.html
@@ -0,0 +1,24 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like maction -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <maction actiontype="toggle" selection="2">
+              <mi>g</mi>
+              <mspace/>
+            </maction>
+            <mo stretchy="false">&#xaf;</mo>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-1.html
@@ -0,0 +1,24 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like maction -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <maction actiontype="toggle" selection="2">
+              <mi>g</mi>
+              <mspace/>
+            </maction>
+            <mo>&#xaf;</mo>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-2-ref.html
@@ -0,0 +1,18 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mrow -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mrow><mspace/></mrow><mo stretchy="false">&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-2.html
@@ -0,0 +1,18 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mrow -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mrow><mspace/></mrow><mo>&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-3-ref.html
@@ -0,0 +1,20 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mstyle -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mstyle><mspace/></mstyle><mo stretchy="false">&#xaf;</mo>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-3.html
@@ -0,0 +1,18 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mstyle -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mstyle><mspace/></mstyle><mo>&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-4-ref.html
@@ -0,0 +1,20 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mpadded -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mpadded><mspace/></mpadded><mo stretchy="false">&#xaf;</mo>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-4.html
@@ -0,0 +1,20 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mpadded -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mpadded><mspace/></mpadded><mo>&#xaf;</mo>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-5-ref.html
@@ -0,0 +1,20 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mphantom -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mphantom><mspace/></mphantom><mo stretchy="false">&#xaf;</mo>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-3-5.html
@@ -0,0 +1,18 @@
+<html>
+  <head>
+    <title>embellished operators: maction and mrow-like as space-like children
+    </title>
+  </head>
+
+  <body>
+    <div>
+      <!-- space-like mphantom -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mphantom><mspace/></mphantom><mo>&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-4-1-ref.html
@@ -0,0 +1,20 @@
+<html>
+  <head>
+    <title>embellished operators 4-1: some non-space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- two embellished operators -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow>
+            <mo stretchy="false">&#xaf;</mo>
+            <mo stretchy="false">&#xaf;</mo>
+          </mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-4-1.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 4-1: some non-space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- two embellished operators -->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mo>&#xaf;</mo><mo>&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-4-2-ref.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 4-2: some non-space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- a non-space-like child before-->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mi>g</mi><mo stretchy="false">&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-4-2.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 4-2: some non-space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- a non-space-like child before-->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mi>g</mi><mo>&#xaf;</mo></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-4-3-ref.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 4-3: some non-space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- a non-space-like child after-->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mo stretchy="false">&#xaf;</mo><mi>g</mi></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-4-3.html
@@ -0,0 +1,17 @@
+<html>
+  <head>
+    <title>embellished operators 4-3: some non-space-like children</title>
+  </head>
+
+  <body>
+    <div>
+      <!-- a non-space-like child after-->
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mover>
+          <mtext>abcdef</mtext>
+          <mrow><mo>&#xaf;</mo><mi>g</mi></mrow>
+        </mover>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-5-1.html
@@ -0,0 +1,21 @@
+<html>
+  <head>
+    <title>embellished operators 5: vertical stretchy operator</title>
+  </head>
+
+  <body>
+    <div>
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mrow>
+          <mrow>
+            <msub>
+              <mo>|</mo>
+              <mspace/>
+            </msub>
+          </mrow>
+          <mspace height="30px" depth="30px"/>
+        </mrow>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-5-2.html
@@ -0,0 +1,19 @@
+<html>
+  <head>
+    <title>embellished operators 5: vertical stretchy operator</title>
+  </head>
+
+  <body>
+    <div>
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mrow>
+          <msub>
+            <mo>|</mo>
+            <mspace/>
+          </msub>
+          <mspace height="30px" depth="30px"/>
+        </mrow>
+      </math>
+    </div>
+  </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/mathml/embellished-op-5-ref.html
@@ -0,0 +1,16 @@
+<html>
+  <head>
+    <title>embellished operators 5: vertical stretchy operator</title>
+  </head>
+
+  <body>
+    <div>
+      <math xmlns="http://www.w3.org/1998/Math/MathML">
+        <mrow>
+          <mo>|</mo>
+          <mspace height="30px" depth="30px"/>
+        </mrow>
+      </math>
+    </div>
+  </body>
+</html>
--- a/layout/reftests/mathml/reftest.list
+++ b/layout/reftests/mathml/reftest.list
@@ -16,16 +16,35 @@
 == mi-mathvariant-2.xhtml mi-mathvariant-2-ref.xhtml
 != non-spacing-accent-1.xhtml non-spacing-accent-1-ref.xhtml
 == overbar-width-1.xhtml overbar-width-1-ref.xhtml
 == quotes-1.xhtml quotes-1-ref.xhtml
 != stretchy-underbar-1.xhtml stretchy-underbar-1-ref.xhtml 
 == table-width-1.xhtml table-width-1-ref.xhtml
 == underbar-width-1.xhtml underbar-width-1-ref.xhtml
 == mathml-type-supported.xhtml mathml-type-supported-ref.xml
+!= embellished-op-1-1.html embellished-op-1-1-ref.html
+!= embellished-op-1-2.html embellished-op-1-2-ref.html
+!= embellished-op-1-3.html embellished-op-1-3-ref.html
+!= embellished-op-1-4.html embellished-op-1-4-ref.html
+!= embellished-op-1-5.html embellished-op-1-5-ref.html
+!= embellished-op-2-1.html embellished-op-2-1-ref.html
+!= embellished-op-2-2.html embellished-op-2-2-ref.html
+!= embellished-op-2-3.html embellished-op-2-3-ref.html
+!= embellished-op-2-4.html embellished-op-2-4-ref.html
+!= embellished-op-3-1.html embellished-op-3-1-ref.html
+!= embellished-op-3-2.html embellished-op-3-2-ref.html
+!= embellished-op-3-3.html embellished-op-3-3-ref.html
+!= embellished-op-3-4.html embellished-op-3-4-ref.html
+!= embellished-op-3-5.html embellished-op-3-5-ref.html
+== embellished-op-4-1.html embellished-op-4-1-ref.html
+== embellished-op-4-2.html embellished-op-4-2-ref.html
+== embellished-op-4-3.html embellished-op-4-3-ref.html
+== embellished-op-5-1.html embellished-op-5-ref.html
+== embellished-op-5-2.html embellished-op-5-ref.html
 == semantics-1.xhtml semantics-1-ref.xhtml
 != mathcolor-1.xml mathcolor-1-ref.xml
 != mathcolor-2.xml mathcolor-2-ref.xml
 != mathcolor-3.xml mathcolor-3-ref.xml
 == mathcolor-4.xml mathcolor-4-ref.xml
 != mathbackground-1.xml mathbackground-1-ref.xml
 != mathbackground-2.xml mathbackground-2-ref.xml
 != mathbackground-3.xml mathbackground-3-ref.xml