| Index: third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp
|
| diff --git a/third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp b/third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp
|
| index cc2171f5bdcb13b76b39117d5f79fe8fcc81019b..03f67d5af4acfa4ba9afd619010141ed05634dc5 100644
|
| --- a/third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp
|
| +++ b/third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp
|
| @@ -54,10 +54,11 @@ const float emphasisMarkFontSizeMultiplier = 0.5f;
|
| static const size_t maxVDMXTableSize = 1024 * 1024; // 1 MB
|
| #endif
|
|
|
| -SimpleFontData::SimpleFontData(const FontPlatformData& platformData, PassRefPtr<CustomFontData> customData, bool isTextOrientationFallback)
|
| +SimpleFontData::SimpleFontData(const FontPlatformData& platformData, float fontSize, PassRefPtr<CustomFontData> customData, bool isTextOrientationFallback)
|
| : m_maxCharWidth(-1)
|
| , m_avgCharWidth(-1)
|
| , m_platformData(platformData)
|
| + , m_fontSize(fontSize)
|
| , m_isTextOrientationFallback(isTextOrientationFallback)
|
| , m_verticalData(nullptr)
|
| , m_hasVerticalGlyphs(false)
|
| @@ -72,7 +73,8 @@ SimpleFontData::SimpleFontData(const FontPlatformData& platformData, PassRefPtr<
|
| }
|
|
|
| SimpleFontData::SimpleFontData(PassRefPtr<CustomFontData> customData, float fontSize, bool syntheticBold, bool syntheticItalic)
|
| - : m_platformData(FontPlatformData(fontSize, syntheticBold, syntheticItalic))
|
| + : m_platformData(FontPlatformData(syntheticBold, syntheticItalic))
|
| + , m_fontSize(fontSize)
|
| , m_isTextOrientationFallback(false)
|
| , m_verticalData(nullptr)
|
| , m_hasVerticalGlyphs(false)
|
| @@ -84,7 +86,7 @@ SimpleFontData::SimpleFontData(PassRefPtr<CustomFontData> customData, float font
|
|
|
| void SimpleFontData::platformInit()
|
| {
|
| - if (!m_platformData.size()) {
|
| + if (!m_fontSize) {
|
| m_fontMetrics.reset();
|
| m_avgCharWidth = 0;
|
| m_maxCharWidth = 0;
|
| @@ -95,6 +97,8 @@ void SimpleFontData::platformInit()
|
| SkPaint::FontMetrics metrics;
|
|
|
| m_platformData.setupPaint(&paint);
|
| + m_style.apply(&paint);
|
| + paint.setTextSize(SkFloatToScalar(m_fontSize));
|
| paint.getFontMetrics(&metrics);
|
| SkTypeface* face = paint.getTypeface();
|
| ASSERT(face);
|
| @@ -107,7 +111,7 @@ void SimpleFontData::platformInit()
|
| // With DirectWrite or CoreText, no bytecode hinting is ever done.
|
| // This code should be pushed into FreeType (hinted font metrics).
|
| static const uint32_t vdmxTag = SkSetFourByteTag('V', 'D', 'M', 'X');
|
| - int pixelSize = m_platformData.size() + 0.5;
|
| + int pixelSize = m_fontSize + 0.5;
|
| if (!paint.isAutohinted()
|
| && (paint.getHinting() == SkPaint::kFull_Hinting
|
| || paint.getHinting() == SkPaint::kNormal_Hinting))
|
| @@ -303,7 +307,7 @@ PassRefPtr<SimpleFontData> SimpleFontData::verticalRightOrientationFontData() co
|
| if (!m_derivedFontData->verticalRightOrientation) {
|
| FontPlatformData verticalRightPlatformData(m_platformData);
|
| verticalRightPlatformData.setOrientation(FontOrientation::Horizontal);
|
| - m_derivedFontData->verticalRightOrientation = create(verticalRightPlatformData, isCustomFont() ? CustomFontData::create(): nullptr, true);
|
| + m_derivedFontData->verticalRightOrientation = create(verticalRightPlatformData, m_fontSize, isCustomFont() ? CustomFontData::create(): nullptr, true);
|
| }
|
| return m_derivedFontData->verticalRightOrientation;
|
| }
|
| @@ -313,7 +317,7 @@ PassRefPtr<SimpleFontData> SimpleFontData::uprightOrientationFontData() const
|
| if (!m_derivedFontData)
|
| m_derivedFontData = DerivedFontData::create(isCustomFont());
|
| if (!m_derivedFontData->uprightOrientation)
|
| - m_derivedFontData->uprightOrientation = create(m_platformData, isCustomFont() ? CustomFontData::create(): nullptr, true);
|
| + m_derivedFontData->uprightOrientation = create(m_platformData, m_fontSize, isCustomFont() ? CustomFontData::create(): nullptr, true);
|
| return m_derivedFontData->uprightOrientation;
|
| }
|
|
|
| @@ -373,7 +377,7 @@ PassRefPtr<SimpleFontData> SimpleFontData::createScaledFontData(const FontDescri
|
| PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
|
| {
|
| const float scaledSize = lroundf(fontDescription.computedSize() * scaleFactor);
|
| - return SimpleFontData::create(FontPlatformData(m_platformData, scaledSize), isCustomFont() ? CustomFontData::create() : nullptr);
|
| + return SimpleFontData::create(m_platformData, scaledSize, isCustomFont() ? CustomFontData::create() : nullptr);
|
| }
|
|
|
| static inline void getSkiaBoundsForGlyph(SkPaint& paint, Glyph glyph, SkRect& bounds)
|
| @@ -393,12 +397,14 @@ static inline void getSkiaBoundsForGlyph(SkPaint& paint, Glyph glyph, SkRect& bo
|
|
|
| FloatRect SimpleFontData::platformBoundsForGlyph(Glyph glyph) const
|
| {
|
| - if (!m_platformData.size())
|
| + if (!m_fontSize)
|
| return FloatRect();
|
|
|
| SkASSERT(sizeof(glyph) == 2); // compile-time assert
|
|
|
| SkPaint paint;
|
| + m_style.apply(&paint);
|
| + paint.setTextSize(SkFloatToScalar(m_fontSize));
|
| m_platformData.setupPaint(&paint);
|
|
|
| SkRect bounds;
|
| @@ -408,13 +414,14 @@ FloatRect SimpleFontData::platformBoundsForGlyph(Glyph glyph) const
|
|
|
| float SimpleFontData::platformWidthForGlyph(Glyph glyph) const
|
| {
|
| - if (!m_platformData.size())
|
| + if (!m_fontSize)
|
| return 0;
|
|
|
| SkASSERT(sizeof(glyph) == 2); // compile-time assert
|
|
|
| SkPaint paint;
|
| -
|
| + m_style.apply(&paint);
|
| + paint.setTextSize(SkFloatToScalar(m_fontSize));
|
| m_platformData.setupPaint(&paint);
|
|
|
| paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
|
|
|