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

Unified Diff: webkit/plugins/ppapi/webkit_forwarding_impl.cc

Issue 7053022: Use the WebKit default fonts when specifying generic font families. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 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: webkit/plugins/ppapi/webkit_forwarding_impl.cc
===================================================================
--- webkit/plugins/ppapi/webkit_forwarding_impl.cc (revision 86427)
+++ webkit/plugins/ppapi/webkit_forwarding_impl.cc (working copy)
@@ -5,11 +5,13 @@
#include "webkit/plugins/ppapi/webkit_forwarding_impl.h"
#include "base/scoped_ptr.h"
+#include "base/string_util.h"
#include "base/synchronization/waitable_event.h"
#include "base/utf_string_conversions.h"
#include "ppapi/c/dev/ppb_font_dev.h"
#include "ppapi/c/pp_point.h"
#include "ppapi/c/pp_rect.h"
+#include "ppapi/shared_impl/ppapi_preferences.h"
#include "skia/ext/platform_canvas.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFont.h"
@@ -43,7 +45,8 @@
// Assumes the given PP_FontDescription has been validated.
WebFontDescription PPFontDescToWebFontDesc(const PP_FontDescription_Dev& font,
- const std::string& face) {
+ const std::string& face,
+ const ::ppapi::Preferences& prefs) {
// Verify that the enums match so we can just static cast.
COMPILE_ASSERT(static_cast<int>(WebFontDescription::Weight100) ==
static_cast<int>(PP_FONTWEIGHT_100),
@@ -65,9 +68,47 @@
MonospaceFamily);
WebFontDescription result;
- result.family = UTF8ToUTF16(face);
+ string16 resolved_family;
+ if (face.empty()) {
+ // Resolve the generic family.
+ switch (font.family) {
+ case PP_FONTFAMILY_SERIF:
yzshen1 2011/05/25 23:40:11 Indent: need to have 2 more spaces.
+ resolved_family = prefs.serif_font_family;
+ break;
+ case PP_FONTFAMILY_SANSSERIF:
+ resolved_family = prefs.sans_serif_font_family;
+ break;
+ case PP_FONTFAMILY_MONOSPACE:
+ resolved_family = prefs.fixed_font_family;
+ break;
+ case PP_FONTFAMILY_DEFAULT:
+ default:
+ resolved_family = prefs.standard_font_family;
+ break;
+ }
+ } else {
+ // Use the exact font.
+ resolved_family = UTF8ToUTF16(face);
+ }
+ result.family = resolved_family;
+
result.genericFamily = PP_FONTFAMILY_TO_WEB_FONTFAMILY(font.family);
- result.size = static_cast<float>(font.size);
+
+ if (font.size == 0) {
+ // Resolve the default font size, using the resolved family to see if
+ // we should use the fixed or regular font size. It's difficult at this
+ // level to detect if the requested font is fixed width, so we only apply
+ // the alternate font size to the default fixed font family.
+ if (StringToLowerASCII(resolved_family) ==
+ StringToLowerASCII(prefs.fixed_font_family))
+ result.size = static_cast<float>(prefs.default_fixed_font_size);
+ else
+ result.size = static_cast<float>(prefs.default_font_size);
+ } else {
+ // Use the exact size.
+ result.size = static_cast<float>(font.size);
+ }
+
result.italic = font.italic != PP_FALSE;
result.smallCaps = font.small_caps != PP_FALSE;
result.weight = static_cast<WebFontDescription::Weight>(font.weight);
@@ -87,7 +128,8 @@
class FontImpl : public WebKitForwarding::Font {
public:
FontImpl(const PP_FontDescription_Dev& desc,
- const std::string& desc_face);
+ const std::string& desc_face,
+ const ::ppapi::Preferences& prefs);
virtual ~FontImpl();
virtual void Describe(base::WaitableEvent* event,
@@ -116,8 +158,10 @@
};
FontImpl::FontImpl(const PP_FontDescription_Dev& desc,
- const std::string& desc_face) {
- WebFontDescription web_font_desc = PPFontDescToWebFontDesc(desc, desc_face);
+ const std::string& desc_face,
+ const ::ppapi::Preferences& prefs) {
+ WebFontDescription web_font_desc = PPFontDescToWebFontDesc(desc, desc_face,
+ prefs);
font_.reset(WebFont::create(web_font_desc));
}
@@ -232,8 +276,9 @@
base::WaitableEvent* event,
const PP_FontDescription_Dev& desc,
const std::string& desc_face,
+ const ::ppapi::Preferences& prefs,
Font** result) {
- *result = new FontImpl(desc, desc_face);
+ *result = new FontImpl(desc, desc_face, prefs);
if (event)
event->Signal();
}
« ppapi/shared_impl/ppapi_preferences.cc ('K') | « webkit/plugins/ppapi/webkit_forwarding_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698