Index: Source/core/rendering/svg/SVGInlineTextBox.cpp |
diff --git a/Source/core/rendering/svg/SVGInlineTextBox.cpp b/Source/core/rendering/svg/SVGInlineTextBox.cpp |
index 8731b0c493186eea9fbff000bb0f91b141757b3d..0a08afbed09a9e873c616604df0f4f3a0d79d424 100644 |
--- a/Source/core/rendering/svg/SVGInlineTextBox.cpp |
+++ b/Source/core/rendering/svg/SVGInlineTextBox.cpp |
@@ -326,16 +326,29 @@ void SVGInlineTextBox::paint(PaintInfo& paintInfo, const LayoutPoint&, LayoutUni |
if (decorations & TextDecorationOverline) |
paintDecoration(paintInfo.context, TextDecorationOverline, fragment); |
- // Fill text |
- if (hasFill) { |
- m_paintingResourceMode = ApplyToFillMode | ApplyToTextMode; |
- paintText(paintInfo.context, style, selectionStyle, fragment, hasSelection, paintSelectedTextOnly); |
- } |
- |
- // Stroke text |
- if (hasVisibleStroke) { |
- m_paintingResourceMode = ApplyToStrokeMode | ApplyToTextMode; |
- paintText(paintInfo.context, style, selectionStyle, fragment, hasSelection, paintSelectedTextOnly); |
+ for (int i = 0; i < 3; i++) { |
+ switch (svgStyle->paintOrderType(i)) { |
+ case PT_FILL: |
+ // Fill text |
+ if (hasFill) { |
+ m_paintingResourceMode = ApplyToFillMode | ApplyToTextMode; |
+ paintText(paintInfo.context, style, selectionStyle, fragment, hasSelection, paintSelectedTextOnly); |
+ } |
+ break; |
+ case PT_STROKE: |
+ // Stroke text |
+ if (hasVisibleStroke) { |
+ m_paintingResourceMode = ApplyToStrokeMode | ApplyToTextMode; |
+ paintText(paintInfo.context, style, selectionStyle, fragment, hasSelection, paintSelectedTextOnly); |
+ } |
+ break; |
+ case PT_MARKERS: |
+ // Markers don't apply to text |
+ break; |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ break; |
+ } |
} |
// Spec: Line-through should be drawn after the text is filled and stroked; thus, the line-through is rendered on top of the text. |