Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Unified Diff: third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp

Issue 1931393002: Introduce typeface cache in blink::FontCache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: wip: others Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698