| Index: third_party/WebKit/Source/core/layout/svg/LayoutSVGInlineText.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGInlineText.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGInlineText.cpp
|
| index eb984c0fa05ddb6a38b04ca01190ff92b89e932c..0b1c4bf1b17f54ee6e2c8baa75bb402ffd2280c7 100644
|
| --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGInlineText.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGInlineText.cpp
|
| @@ -367,38 +367,40 @@ void LayoutSVGInlineText::updateMetricsList(bool& lastCharacterWasWhiteSpace) {
|
| }
|
|
|
| void LayoutSVGInlineText::updateScaledFont() {
|
| - computeNewScaledFontForStyle(this, m_scalingFactor, m_scaledFont);
|
| + computeNewScaledFontForStyle(*this, m_scalingFactor, m_scaledFont);
|
| }
|
|
|
| void LayoutSVGInlineText::computeNewScaledFontForStyle(
|
| - LayoutObject* layoutObject,
|
| + const LayoutObject& layoutObject,
|
| float& scalingFactor,
|
| Font& scaledFont) {
|
| - const ComputedStyle* style = layoutObject->style();
|
| - ASSERT(style);
|
| - ASSERT(layoutObject);
|
| + const ComputedStyle& style = layoutObject.styleRef();
|
|
|
| // Alter font-size to the right on-screen value to avoid scaling the glyphs
|
| // themselves, except when GeometricPrecision is specified.
|
| scalingFactor =
|
| - SVGLayoutSupport::calculateScreenFontSizeScalingFactor(layoutObject);
|
| - if (style->effectiveZoom() == 1 && (scalingFactor == 1 || !scalingFactor)) {
|
| + SVGLayoutSupport::calculateScreenFontSizeScalingFactor(&layoutObject);
|
| + if (!scalingFactor) {
|
| scalingFactor = 1;
|
| - scaledFont = style->font();
|
| + scaledFont = style.font();
|
| return;
|
| }
|
|
|
| - if (style->getFontDescription().textRendering() == GeometricPrecision)
|
| + const FontDescription& unscaledFontDescription = style.getFontDescription();
|
| + if (unscaledFontDescription.textRendering() == GeometricPrecision)
|
| scalingFactor = 1;
|
|
|
| - FontDescription fontDescription(style->getFontDescription());
|
| + Document& document = layoutObject.document();
|
| + float scaledFontSize = FontSize::getComputedSizeFromSpecifiedSize(
|
| + &document, scalingFactor, unscaledFontDescription.isAbsoluteSize(),
|
| + unscaledFontDescription.specifiedSize(), DoNotApplyMinimumForFontSize);
|
| + if (scaledFontSize == unscaledFontDescription.computedSize()) {
|
| + scaledFont = style.font();
|
| + return;
|
| + }
|
|
|
| - Document& document = layoutObject->document();
|
| - // FIXME: We need to better handle the case when we compute very small fonts
|
| - // below (below 1pt).
|
| - fontDescription.setComputedSize(FontSize::getComputedSizeFromSpecifiedSize(
|
| - &document, scalingFactor, fontDescription.isAbsoluteSize(),
|
| - fontDescription.specifiedSize(), DoNotUseSmartMinimumForFontSize));
|
| + FontDescription fontDescription = unscaledFontDescription;
|
| + fontDescription.setComputedSize(scaledFontSize);
|
|
|
| scaledFont = Font(fontDescription);
|
| scaledFont.update(document.styleEngine().fontSelector());
|
|
|