Index: Source/core/rendering/RenderThemeChromiumFontProviderWin.cpp |
diff --git a/Source/core/rendering/RenderThemeChromiumFontProviderWin.cpp b/Source/core/rendering/RenderThemeChromiumFontProviderWin.cpp |
index 810f724330d53f6c5c274d36fb7c487156359dfd..775b489b60c026d9660d5167833e0a8d6604b921 100644 |
--- a/Source/core/rendering/RenderThemeChromiumFontProviderWin.cpp |
+++ b/Source/core/rendering/RenderThemeChromiumFontProviderWin.cpp |
@@ -41,24 +41,6 @@ |
namespace blink { |
-static FontDescription& smallSystemFont() |
-{ |
- DEFINE_STATIC_LOCAL(FontDescription, font, ()); |
- return font; |
-} |
- |
-static FontDescription& menuFont() |
-{ |
- DEFINE_STATIC_LOCAL(FontDescription, font, ()); |
- return font; |
-} |
- |
-static FontDescription& labelFont() |
-{ |
- DEFINE_STATIC_LOCAL(FontDescription, font, ()); |
- return font; |
-} |
- |
// Converts |points| to pixels. One point is 1/72 of an inch. |
static float pointsToPixels(float points) |
{ |
@@ -118,74 +100,51 @@ static float systemFontSize(const LOGFONT& font) |
} |
// static |
-void RenderThemeChromiumFontProvider::systemFont(CSSValueID valueID, FontDescription& fontDescription) |
+void RenderThemeChromiumFontProvider::systemFont(CSSValueID systemFontID, FontStyle& fontStyle, FontWeight& fontWeight, float& fontSize, AtomicString& fontFamily) |
{ |
- // This logic owes much to RenderThemeSafari.cpp. |
- FontDescription* cachedDesc = 0; |
- AtomicString faceName; |
- float fontSize = 0; |
- switch (valueID) { |
- case CSSValueSmallCaption: |
- cachedDesc = &smallSystemFont(); |
- if (!smallSystemFont().isAbsoluteSize()) { |
- NONCLIENTMETRICS metrics; |
- getNonClientMetrics(&metrics); |
- faceName = AtomicString(metrics.lfSmCaptionFont.lfFaceName, wcslen(metrics.lfSmCaptionFont.lfFaceName)); |
- fontSize = systemFontSize(metrics.lfSmCaptionFont); |
- } |
+ fontStyle = FontStyleNormal; |
+ fontWeight = FontWeightNormal; |
+ |
+ switch (systemFontID) { |
+ case CSSValueSmallCaption: { |
+ NONCLIENTMETRICS metrics; |
+ getNonClientMetrics(&metrics); |
+ fontSize = systemFontSize(metrics.lfSmCaptionFont); |
+ fontFamily = AtomicString(metrics.lfSmCaptionFont.lfFaceName, wcslen(metrics.lfSmCaptionFont.lfFaceName)); |
break; |
- case CSSValueMenu: |
- cachedDesc = &menuFont(); |
- if (!menuFont().isAbsoluteSize()) { |
- NONCLIENTMETRICS metrics; |
- getNonClientMetrics(&metrics); |
- faceName = AtomicString(metrics.lfMenuFont.lfFaceName, wcslen(metrics.lfMenuFont.lfFaceName)); |
- fontSize = systemFontSize(metrics.lfMenuFont); |
- } |
+ } |
+ case CSSValueMenu: { |
+ NONCLIENTMETRICS metrics; |
+ getNonClientMetrics(&metrics); |
+ fontSize = systemFontSize(metrics.lfMenuFont); |
+ fontFamily = AtomicString(metrics.lfMenuFont.lfFaceName, wcslen(metrics.lfMenuFont.lfFaceName)); |
break; |
- case CSSValueStatusBar: |
- cachedDesc = &labelFont(); |
- if (!labelFont().isAbsoluteSize()) { |
- NONCLIENTMETRICS metrics; |
- getNonClientMetrics(&metrics); |
- faceName = metrics.lfStatusFont.lfFaceName; |
- fontSize = systemFontSize(metrics.lfStatusFont); |
- } |
+ } |
+ case CSSValueStatusBar: { |
+ NONCLIENTMETRICS metrics; |
+ getNonClientMetrics(&metrics); |
+ fontSize = systemFontSize(metrics.lfStatusFont); |
+ fontFamily = metrics.lfStatusFont.lfFaceName; |
break; |
+ } |
case CSSValueWebkitMiniControl: |
case CSSValueWebkitSmallControl: |
case CSSValueWebkitControl: |
- faceName = defaultGUIFont(); |
// Why 2 points smaller? Because that's what Gecko does. |
fontSize = s_defaultFontSize - pointsToPixels(2); |
+ fontFamily = defaultGUIFont(); |
break; |
default: |
- faceName = defaultGUIFont(); |
fontSize = s_defaultFontSize; |
+ fontFamily = defaultGUIFont(); |
break; |
} |
- |
- if (!cachedDesc) |
- cachedDesc = &fontDescription; |
- |
- if (fontSize) { |
- cachedDesc->firstFamily().setFamily(faceName); |
- cachedDesc->setIsAbsoluteSize(true); |
- cachedDesc->setGenericFamily(FontDescription::NoFamily); |
- cachedDesc->setSpecifiedSize(fontSize); |
- cachedDesc->setWeight(FontWeightNormal); |
- cachedDesc->setStyle(FontStyleNormal); |
- } |
- fontDescription = *cachedDesc; |
} |
// static |
void RenderThemeChromiumFontProvider::setDefaultFontSize(int fontSize) |
{ |
s_defaultFontSize = static_cast<float>(fontSize); |
- |
- // Reset cached fonts. |
- smallSystemFont() = menuFont() = labelFont() = FontDescription(); |
} |
} // namespace blink |