| Index: ui/gfx/font_render_params_linux.cc
|
| diff --git a/ui/gfx/font_render_params_linux.cc b/ui/gfx/font_render_params_linux.cc
|
| index f02636e8050c2da9466648995aada7952e1f09f6..a198358ecff6e279277157ba31cfa3d3a1ed7304 100644
|
| --- a/ui/gfx/font_render_params_linux.cc
|
| +++ b/ui/gfx/font_render_params_linux.cc
|
| @@ -23,6 +23,12 @@ namespace gfx {
|
|
|
| namespace {
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +// A device scale factor for an internal display (if any)
|
| +// that is used to determine if subpixel positioning should be used.
|
| +float device_scale_factor_for_internal_display = 1.0f;
|
| +#endif
|
| +
|
| // Keyed by hashes of FontRenderParamQuery structs from
|
| // HashFontRenderParamsQuery().
|
| typedef base::MRUCache<uint32, FontRenderParams> Cache;
|
| @@ -43,6 +49,14 @@ struct SynchronizedCache {
|
| base::LazyInstance<SynchronizedCache>::Leaky g_synchronized_cache =
|
| LAZY_INSTANCE_INITIALIZER;
|
|
|
| +bool IsBrowserTextSubpixelPositioningEnabled() {
|
| +#if defined(OS_CHROMEOS)
|
| + return device_scale_factor_for_internal_display > 1.0f;
|
| +#else
|
| + return false;
|
| +#endif
|
| +}
|
| +
|
| // Converts Fontconfig FC_HINT_STYLE to FontRenderParams::Hinting.
|
| FontRenderParams::Hinting ConvertFontconfigHintStyle(int hint_style) {
|
| switch (hint_style) {
|
| @@ -176,7 +190,6 @@ FontRenderParams GetFontRenderParams(const FontRenderParamsQuery& query,
|
| if (delegate)
|
| params = delegate->GetDefaultFontRenderParams();
|
| QueryFontconfig(query, ¶ms, family_out);
|
| -
|
| if (!params.antialiasing) {
|
| // Cairo forces full hinting when antialiasing is disabled, since anything
|
| // less than that looks awful; do the same here. Requesting subpixel
|
| @@ -187,10 +200,11 @@ FontRenderParams GetFontRenderParams(const FontRenderParamsQuery& query,
|
| } else {
|
| // Fontconfig doesn't support configuring subpixel positioning; check a
|
| // flag.
|
| - params.subpixel_positioning = CommandLine::ForCurrentProcess()->HasSwitch(
|
| + params.subpixel_positioning =
|
| query.for_web_contents ?
|
| - switches::kEnableWebkitTextSubpixelPositioning :
|
| - switches::kEnableBrowserTextSubpixelPositioning);
|
| + CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kEnableWebkitTextSubpixelPositioning) :
|
| + IsBrowserTextSubpixelPositioningEnabled();
|
|
|
| // To enable subpixel positioning, we need to disable hinting.
|
| if (params.subpixel_positioning)
|
| @@ -217,4 +231,10 @@ void ClearFontRenderParamsCacheForTest() {
|
| synchronized_cache->cache.Clear();
|
| }
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +void SetFontRenderParamsDeviceScaleFactor(float device_scale_factor) {
|
| + device_scale_factor_for_internal_display = device_scale_factor;
|
| +}
|
| +#endif
|
| +
|
| } // namespace gfx
|
|
|