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

Side by Side Diff: ui/gfx/font_render_params_linux_unittest.cc

Issue 811123002: linux/chromeos: Improve querying for Fontconfig defaults. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: apply review feedback Created 6 years 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 unified diff | Download patch
« no previous file with comments | « ui/gfx/font_render_params_linux.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/font_render_params.h" 5 #include "ui/gfx/font_render_params.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 29 matching lines...) Expand all
40 return 96.0; 40 return 96.0;
41 } 41 }
42 42
43 private: 43 private:
44 FontRenderParams params_; 44 FontRenderParams params_;
45 45
46 DISALLOW_COPY_AND_ASSIGN(TestFontDelegate); 46 DISALLOW_COPY_AND_ASSIGN(TestFontDelegate);
47 }; 47 };
48 48
49 // Loads the first system font defined by fontconfig_util_linux.h with a base 49 // Loads the first system font defined by fontconfig_util_linux.h with a base
50 // filename of |basename|. Case is ignored. 50 // filename of |basename|. Case is ignored. FcFontMatch() requires there to be
51 // at least one font present.
51 bool LoadSystemFont(const std::string& basename) { 52 bool LoadSystemFont(const std::string& basename) {
52 for (size_t i = 0; i < kNumSystemFontsForFontconfig; ++i) { 53 for (size_t i = 0; i < kNumSystemFontsForFontconfig; ++i) {
53 base::FilePath path(gfx::kSystemFontsForFontconfig[i]); 54 base::FilePath path(gfx::kSystemFontsForFontconfig[i]);
54 if (strcasecmp(path.BaseName().value().c_str(), basename.c_str()) == 0) 55 if (strcasecmp(path.BaseName().value().c_str(), basename.c_str()) == 0)
55 return LoadFontIntoFontconfig(path); 56 return LoadFontIntoFontconfig(path);
56 } 57 }
57 LOG(ERROR) << "Unable to find system font named " << basename; 58 LOG(ERROR) << "Unable to find system font named " << basename;
58 return false; 59 return false;
59 } 60 }
60 61
(...skipping 28 matching lines...) Expand all
89 ASSERT_TRUE(LoadSystemFont("arial.ttf")); 90 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
90 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 91 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
91 std::string(kFontconfigFileHeader) + 92 std::string(kFontconfigFileHeader) +
92 kFontconfigMatchPatternHeader + 93 kFontconfigMatchPatternHeader +
93 CreateFontconfigEditStanza("antialias", "bool", "true") + 94 CreateFontconfigEditStanza("antialias", "bool", "true") +
94 CreateFontconfigEditStanza("autohint", "bool", "true") + 95 CreateFontconfigEditStanza("autohint", "bool", "true") +
95 CreateFontconfigEditStanza("hinting", "bool", "true") + 96 CreateFontconfigEditStanza("hinting", "bool", "true") +
96 CreateFontconfigEditStanza("hintstyle", "const", "hintslight") + 97 CreateFontconfigEditStanza("hintstyle", "const", "hintslight") +
97 CreateFontconfigEditStanza("rgba", "const", "rgb") + 98 CreateFontconfigEditStanza("rgba", "const", "rgb") +
98 kFontconfigMatchFooter + 99 kFontconfigMatchFooter +
99 // Add a font match for Arial; it shouldn't be used when querying for 100 // Add a font match for Arial; it shouldn't be used on Chrome OS but when
100 // default settings: http://crbug.com/421247 101 // querying for default settings: http://crbug.com/421247
102 //
103 // The match _should_ take effect on desktop Linux, though:
104 // http://crbug.com/442443
101 kFontconfigMatchFontHeader + 105 kFontconfigMatchFontHeader +
102 CreateFontconfigTestStanza("family", "eq", "string", "Arial") + 106 CreateFontconfigTestStanza("family", "eq", "string", "Arial") +
103 CreateFontconfigEditStanza("antialias", "bool", "true") + 107 CreateFontconfigEditStanza("antialias", "bool", "true") +
104 CreateFontconfigEditStanza("autohint", "bool", "false") + 108 CreateFontconfigEditStanza("autohint", "bool", "false") +
105 CreateFontconfigEditStanza("hinting", "bool", "true") + 109 CreateFontconfigEditStanza("hinting", "bool", "true") +
106 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") + 110 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") +
107 kFontconfigMatchFooter + 111 kFontconfigMatchFooter +
108 kFontconfigFileFooter)); 112 kFontconfigFileFooter));
109 113
110 FontRenderParams params = GetFontRenderParams( 114 FontRenderParams params = GetFontRenderParams(
111 FontRenderParamsQuery(true), NULL); 115 FontRenderParamsQuery(true), NULL);
112 EXPECT_TRUE(params.antialiasing); 116 EXPECT_TRUE(params.antialiasing);
117 EXPECT_TRUE(params.use_bitmaps);
118 #if defined(OS_CHROMEOS)
113 EXPECT_TRUE(params.autohinter); 119 EXPECT_TRUE(params.autohinter);
114 EXPECT_TRUE(params.use_bitmaps);
115 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); 120 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting);
121 #else
122 EXPECT_FALSE(params.autohinter);
123 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting);
124 #endif
116 EXPECT_FALSE(params.subpixel_positioning); 125 EXPECT_FALSE(params.subpixel_positioning);
117 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, 126 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB,
118 params.subpixel_rendering); 127 params.subpixel_rendering);
119 } 128 }
120 129
121 TEST_F(FontRenderParamsTest, Size) { 130 TEST_F(FontRenderParamsTest, Size) {
122 ASSERT_TRUE(LoadSystemFont("arial.ttf")); 131 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
123 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 132 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
124 std::string(kFontconfigFileHeader) + 133 std::string(kFontconfigFileHeader) +
125 kFontconfigMatchPatternHeader + 134 kFontconfigMatchPatternHeader +
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 params.subpixel_rendering); 216 params.subpixel_rendering);
208 217
209 query.style = Font::BOLD | Font::ITALIC; 218 query.style = Font::BOLD | Font::ITALIC;
210 params = GetFontRenderParams(query, NULL); 219 params = GetFontRenderParams(query, NULL);
211 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting); 220 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting);
212 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, 221 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE,
213 params.subpixel_rendering); 222 params.subpixel_rendering);
214 } 223 }
215 224
216 TEST_F(FontRenderParamsTest, Scalable) { 225 TEST_F(FontRenderParamsTest, Scalable) {
226 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
msw 2014/12/18 01:10:49 nit: We previously tried to avoid loading fonts fo
Daniel Erat 2014/12/18 17:17:59 sure, done. just added it here since just about al
217 // Load a config that only enables antialiasing for scalable fonts. 227 // Load a config that only enables antialiasing for scalable fonts.
218 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 228 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
219 std::string(kFontconfigFileHeader) + 229 std::string(kFontconfigFileHeader) +
220 kFontconfigMatchPatternHeader + 230 kFontconfigMatchPatternHeader +
221 CreateFontconfigEditStanza("antialias", "bool", "false") + 231 CreateFontconfigEditStanza("antialias", "bool", "false") +
222 kFontconfigMatchFooter + 232 kFontconfigMatchFooter +
223 kFontconfigMatchPatternHeader + 233 kFontconfigMatchPatternHeader +
224 CreateFontconfigTestStanza("scalable", "eq", "bool", "true") + 234 CreateFontconfigTestStanza("scalable", "eq", "bool", "true") +
225 CreateFontconfigEditStanza("antialias", "bool", "true") + 235 CreateFontconfigEditStanza("antialias", "bool", "true") +
226 kFontconfigMatchFooter + 236 kFontconfigMatchFooter +
(...skipping 22 matching lines...) Expand all
249 FontRenderParamsQuery query(false); 259 FontRenderParamsQuery query(false);
250 FontRenderParams params = GetFontRenderParams(query, NULL); 260 FontRenderParams params = GetFontRenderParams(query, NULL);
251 EXPECT_FALSE(params.use_bitmaps); 261 EXPECT_FALSE(params.use_bitmaps);
252 262
253 query.pixel_size = 5; 263 query.pixel_size = 5;
254 params = GetFontRenderParams(query, NULL); 264 params = GetFontRenderParams(query, NULL);
255 EXPECT_TRUE(params.use_bitmaps); 265 EXPECT_TRUE(params.use_bitmaps);
256 } 266 }
257 267
258 TEST_F(FontRenderParamsTest, ForceFullHintingWhenAntialiasingIsDisabled) { 268 TEST_F(FontRenderParamsTest, ForceFullHintingWhenAntialiasingIsDisabled) {
269 ASSERT_TRUE(LoadSystemFont("arial.ttf"));
259 // Load a config that disables antialiasing and hinting while requesting 270 // Load a config that disables antialiasing and hinting while requesting
260 // subpixel rendering. 271 // subpixel rendering.
261 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), 272 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(),
262 std::string(kFontconfigFileHeader) + 273 std::string(kFontconfigFileHeader) +
263 kFontconfigMatchPatternHeader + 274 kFontconfigMatchPatternHeader +
264 CreateFontconfigEditStanza("antialias", "bool", "false") + 275 CreateFontconfigEditStanza("antialias", "bool", "false") +
265 CreateFontconfigEditStanza("hinting", "bool", "false") + 276 CreateFontconfigEditStanza("hinting", "bool", "false") +
266 CreateFontconfigEditStanza("hintstyle", "const", "hintnone") + 277 CreateFontconfigEditStanza("hintstyle", "const", "hintnone") +
267 CreateFontconfigEditStanza("rgba", "const", "rgb") + 278 CreateFontconfigEditStanza("rgba", "const", "rgb") +
268 kFontconfigMatchFooter + 279 kFontconfigMatchFooter +
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 EXPECT_EQ("Verdana", suggested_family); 390 EXPECT_EQ("Verdana", suggested_family);
380 391
381 query.families.clear(); 392 query.families.clear();
382 query.families.push_back("Arial"); 393 query.families.push_back("Arial");
383 suggested_family.clear(); 394 suggested_family.clear();
384 GetFontRenderParams(query, &suggested_family); 395 GetFontRenderParams(query, &suggested_family);
385 EXPECT_EQ("Verdana", suggested_family); 396 EXPECT_EQ("Verdana", suggested_family);
386 } 397 }
387 398
388 } // namespace gfx 399 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/font_render_params_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698