diff options
Diffstat (limited to 'ui/gfx/font_render_params_linux.cc')
-rw-r--r-- | ui/gfx/font_render_params_linux.cc | 67 |
1 files changed, 19 insertions, 48 deletions
diff --git a/ui/gfx/font_render_params_linux.cc b/ui/gfx/font_render_params_linux.cc index bba66d4..e8e60e3 100644 --- a/ui/gfx/font_render_params_linux.cc +++ b/ui/gfx/font_render_params_linux.cc @@ -38,12 +38,8 @@ FontRenderParams::SubpixelRendering ConvertFontconfigRgba(int rgba) { } // Queries Fontconfig for rendering settings and updates |params_out| and -// |family_out| (if non-NULL). Returns false on failure. See -// GetCustomFontRenderParams() for descriptions of arguments. -bool QueryFontconfig(const std::vector<std::string>* family_list, - const int* pixel_size, - const int* point_size, - const int* style, +// |family_out| (if non-NULL). Returns false on failure. +bool QueryFontconfig(const FontRenderParamsQuery& query, FontRenderParams* params_out, std::string* family_out) { FcPattern* pattern = FcPatternCreate(); @@ -51,22 +47,20 @@ bool QueryFontconfig(const std::vector<std::string>* family_list, FcPatternAddBool(pattern, FC_SCALABLE, FcTrue); - if (family_list) { - for (std::vector<std::string>::const_iterator it = family_list->begin(); - it != family_list->end(); ++it) { - FcPatternAddString( - pattern, FC_FAMILY, reinterpret_cast<const FcChar8*>(it->c_str())); - } + for (std::vector<std::string>::const_iterator it = query.families.begin(); + it != query.families.end(); ++it) { + FcPatternAddString( + pattern, FC_FAMILY, reinterpret_cast<const FcChar8*>(it->c_str())); } - if (pixel_size) - FcPatternAddDouble(pattern, FC_PIXEL_SIZE, *pixel_size); - if (point_size) - FcPatternAddInteger(pattern, FC_SIZE, *point_size); - if (style) { + if (query.pixel_size > 0) + FcPatternAddDouble(pattern, FC_PIXEL_SIZE, query.pixel_size); + if (query.point_size > 0) + FcPatternAddInteger(pattern, FC_SIZE, query.point_size); + if (query.style >= 0) { FcPatternAddInteger(pattern, FC_SLANT, - (*style & Font::ITALIC) ? FC_SLANT_ITALIC : FC_SLANT_ROMAN); + (query.style & Font::ITALIC) ? FC_SLANT_ITALIC : FC_SLANT_ROMAN); FcPatternAddInteger(pattern, FC_WEIGHT, - (*style & Font::BOLD) ? FC_WEIGHT_BOLD : FC_WEIGHT_NORMAL); + (query.style & Font::BOLD) ? FC_WEIGHT_BOLD : FC_WEIGHT_NORMAL); } FcConfigSubstitute(NULL, pattern, FcMatchPattern); @@ -120,31 +114,10 @@ bool QueryFontconfig(const std::vector<std::string>* family_list, return true; } -// Returns the system's default settings. -FontRenderParams LoadDefaults(bool for_web_contents) { - return GetCustomFontRenderParams( - for_web_contents, NULL, NULL, NULL, NULL, NULL); -} - } // namespace -const FontRenderParams& GetDefaultFontRenderParams() { - static FontRenderParams default_params = LoadDefaults(false); - return default_params; -} - -const FontRenderParams& GetDefaultWebKitFontRenderParams() { - static FontRenderParams default_params = LoadDefaults(true); - return default_params; -} - -FontRenderParams GetCustomFontRenderParams( - bool for_web_contents, - const std::vector<std::string>* family_list, - const int* pixel_size, - const int* point_size, - const int* style, - std::string* family_out) { +FontRenderParams GetFontRenderParams(const FontRenderParamsQuery& query, + std::string* family_out) { if (family_out) family_out->clear(); @@ -153,12 +126,11 @@ FontRenderParams GetCustomFontRenderParams( const LinuxFontDelegate* delegate = LinuxFontDelegate::instance(); if (delegate) params = delegate->GetDefaultFontRenderParams(); - QueryFontconfig( - family_list, pixel_size, point_size, style, ¶ms, family_out); + QueryFontconfig(query, ¶ms, family_out); // Fontconfig doesn't support configuring subpixel positioning; check a flag. params.subpixel_positioning = CommandLine::ForCurrentProcess()->HasSwitch( - for_web_contents ? + query.for_web_contents ? switches::kEnableWebkitTextSubpixelPositioning : switches::kEnableBrowserTextSubpixelPositioning); @@ -167,9 +139,8 @@ FontRenderParams GetCustomFontRenderParams( params.hinting = FontRenderParams::HINTING_NONE; // Use the first family from the list if Fontconfig didn't suggest a family. - if (family_out && family_out->empty() && - family_list && !family_list->empty()) - *family_out = (*family_list)[0]; + if (family_out && family_out->empty() && !query.families.empty()) + *family_out = query.families[0]; return params; } |