diff --git a/layout/reftests/svg/reftest.list b/layout/reftests/svg/reftest.list index 91ba4b22a29..893ff82de17 100644 --- a/layout/reftests/svg/reftest.list +++ b/layout/reftests/svg/reftest.list @@ -324,7 +324,6 @@ skip-if(B2G) random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == tspan-rotat skip-if(B2G) random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == tspan-rotate-04.svg tspan-rotate-ref.svg # Bug 629718 for random failure on WinXP # bug 773482 random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == tspan-rotate-05.svg tspan-rotate-ref.svg # Bug 629718 for random failure on WinXP skip-if(B2G) random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == tspan-rotate-06.svg tspan-rotate-ref.svg # Bug 629718 for random failure on WinXP # bug 773482 -== tspan-rotate-07.svg tspan-rotate-07-ref.svg == tspan-rotate-textPath-01.svg tspan-rotate-textPath-01-ref.svg skip-if(B2G) == tspan-xy-01.svg tspan-xy-ref.svg # bug 773482 skip-if(B2G) == tspan-xy-02.svg tspan-xy-ref.svg # bug 773482 diff --git a/layout/reftests/svg/tspan-rotate-07-ref.svg b/layout/reftests/svg/tspan-rotate-07-ref.svg deleted file mode 100644 index 5494cda6c2c..00000000000 --- a/layout/reftests/svg/tspan-rotate-07-ref.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - A B - diff --git a/layout/reftests/svg/tspan-rotate-07.svg b/layout/reftests/svg/tspan-rotate-07.svg deleted file mode 100644 index 83b1dbdde1e..00000000000 --- a/layout/reftests/svg/tspan-rotate-07.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - A B - diff --git a/layout/svg/nsSVGTextFrame2.cpp b/layout/svg/nsSVGTextFrame2.cpp index 2ff45be5ab5..0c6e55e7d0e 100644 --- a/layout/svg/nsSVGTextFrame2.cpp +++ b/layout/svg/nsSVGTextFrame2.cpp @@ -4128,11 +4128,8 @@ nsSVGTextFrame2::ResolvePositions(nsIContent* aContent, j++; } // Propagate final rotate="" value to the end of this element. - while (j < count && - (!mPositions[aIndex + j].IsAngleSpecified() || - mPositions[aIndex + j].mAngleImplied)) { + while (j < count) { mPositions[aIndex + j].mAngle = mPositions[aIndex + j - 1].mAngle; - mPositions[aIndex + j].mAngleImplied = true; j++; } } @@ -4664,7 +4661,11 @@ nsSVGTextFrame2::DoGlyphPositioning() } // Fill in unspecified rotation values. if (!mPositions[i].IsAngleSpecified()) { - mPositions[i].mAngle = 0.0f; + mPositions[i].mAngle = mPositions[i - 1].mAngle; + if (mPositions[i].mAngle != 0.0f) { + // Any non-zero rotation must begin a run boundary. + mPositions[i].mRunBoundary = true; + } } } diff --git a/layout/svg/nsSVGTextFrame2.h b/layout/svg/nsSVGTextFrame2.h index 49e2b31e47b..c0d3cc3107c 100644 --- a/layout/svg/nsSVGTextFrame2.h +++ b/layout/svg/nsSVGTextFrame2.h @@ -47,8 +47,7 @@ struct CharPosition mUnaddressable(false), mClusterOrLigatureGroupMiddle(false), mRunBoundary(false), - mStartOfChunk(false), - mAngleImplied(false) + mStartOfChunk(false) { } @@ -59,8 +58,7 @@ struct CharPosition mUnaddressable(false), mClusterOrLigatureGroupMiddle(false), mRunBoundary(false), - mStartOfChunk(false), - mAngleImplied(false) + mStartOfChunk(false) { } @@ -104,10 +102,6 @@ struct CharPosition // an anchored chunk begins here bool mStartOfChunk; - // whether the angle value was implied due to the repetition of the final - // value in a rotate="" attribute - bool mAngleImplied; - private: static gfxFloat UnspecifiedCoord() {