| OLD | NEW |
| 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // default settings: http://crbug.com/421247 | 100 // default settings: http://crbug.com/421247 |
| 101 kFontconfigMatchFontHeader + | 101 kFontconfigMatchFontHeader + |
| 102 CreateFontconfigTestStanza("family", "eq", "string", "Arial") + | 102 CreateFontconfigTestStanza("family", "eq", "string", "Arial") + |
| 103 CreateFontconfigEditStanza("antialias", "bool", "true") + | 103 CreateFontconfigEditStanza("antialias", "bool", "true") + |
| 104 CreateFontconfigEditStanza("autohint", "bool", "false") + | 104 CreateFontconfigEditStanza("autohint", "bool", "false") + |
| 105 CreateFontconfigEditStanza("hinting", "bool", "true") + | 105 CreateFontconfigEditStanza("hinting", "bool", "true") + |
| 106 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") + | 106 CreateFontconfigEditStanza("hintstyle", "const", "hintfull") + |
| 107 kFontconfigMatchFooter + | 107 kFontconfigMatchFooter + |
| 108 kFontconfigFileFooter)); | 108 kFontconfigFileFooter)); |
| 109 | 109 |
| 110 FontRenderParams params = GetFontRenderParams( | 110 FontRenderParams params = |
| 111 FontRenderParamsQuery(true), NULL); | 111 GetCurrentFontRenderParams(FontRenderParamsQuery(true), NULL); |
| 112 EXPECT_TRUE(params.antialiasing); | 112 EXPECT_TRUE(params.antialiasing); |
| 113 EXPECT_TRUE(params.autohinter); | 113 EXPECT_TRUE(params.autohinter); |
| 114 EXPECT_TRUE(params.use_bitmaps); | 114 EXPECT_TRUE(params.use_bitmaps); |
| 115 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); | 115 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); |
| 116 EXPECT_FALSE(params.subpixel_positioning); | 116 EXPECT_FALSE(params.subpixel_positioning); |
| 117 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, | 117 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, |
| 118 params.subpixel_rendering); | 118 params.subpixel_rendering); |
| 119 } | 119 } |
| 120 | 120 |
| 121 TEST_F(FontRenderParamsTest, Size) { | 121 TEST_F(FontRenderParamsTest, Size) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 136 CreateFontconfigTestStanza("size", "more_eq", "double", "20") + | 136 CreateFontconfigTestStanza("size", "more_eq", "double", "20") + |
| 137 CreateFontconfigEditStanza("hintstyle", "const", "hintslight") + | 137 CreateFontconfigEditStanza("hintstyle", "const", "hintslight") + |
| 138 CreateFontconfigEditStanza("rgba", "const", "rgb") + | 138 CreateFontconfigEditStanza("rgba", "const", "rgb") + |
| 139 kFontconfigMatchFooter + | 139 kFontconfigMatchFooter + |
| 140 kFontconfigFileFooter)); | 140 kFontconfigFileFooter)); |
| 141 | 141 |
| 142 // The defaults should be used when the supplied size isn't matched by the | 142 // The defaults should be used when the supplied size isn't matched by the |
| 143 // second or third blocks. | 143 // second or third blocks. |
| 144 FontRenderParamsQuery query(false); | 144 FontRenderParamsQuery query(false); |
| 145 query.pixel_size = 12; | 145 query.pixel_size = 12; |
| 146 FontRenderParams params = GetFontRenderParams(query, NULL); | 146 FontRenderParams params = GetCurrentFontRenderParams(query, NULL); |
| 147 EXPECT_TRUE(params.antialiasing); | 147 EXPECT_TRUE(params.antialiasing); |
| 148 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); | 148 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); |
| 149 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, | 149 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, |
| 150 params.subpixel_rendering); | 150 params.subpixel_rendering); |
| 151 | 151 |
| 152 query.pixel_size = 10; | 152 query.pixel_size = 10; |
| 153 params = GetFontRenderParams(query, NULL); | 153 params = GetCurrentFontRenderParams(query, NULL); |
| 154 EXPECT_FALSE(params.antialiasing); | 154 EXPECT_FALSE(params.antialiasing); |
| 155 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); | 155 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); |
| 156 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, | 156 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, |
| 157 params.subpixel_rendering); | 157 params.subpixel_rendering); |
| 158 | 158 |
| 159 query.pixel_size = 0; | 159 query.pixel_size = 0; |
| 160 query.point_size = 20; | 160 query.point_size = 20; |
| 161 params = GetFontRenderParams(query, NULL); | 161 params = GetCurrentFontRenderParams(query, NULL); |
| 162 EXPECT_TRUE(params.antialiasing); | 162 EXPECT_TRUE(params.antialiasing); |
| 163 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); | 163 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); |
| 164 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, | 164 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, |
| 165 params.subpixel_rendering); | 165 params.subpixel_rendering); |
| 166 } | 166 } |
| 167 | 167 |
| 168 TEST_F(FontRenderParamsTest, Style) { | 168 TEST_F(FontRenderParamsTest, Style) { |
| 169 ASSERT_TRUE(LoadSystemFont("arial.ttf")); | 169 ASSERT_TRUE(LoadSystemFont("arial.ttf")); |
| 170 // Load a config that disables subpixel rendering for bold text and disables | 170 // Load a config that disables subpixel rendering for bold text and disables |
| 171 // hinting for italic text. | 171 // hinting for italic text. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 182 CreateFontconfigEditStanza("rgba", "const", "none") + | 182 CreateFontconfigEditStanza("rgba", "const", "none") + |
| 183 kFontconfigMatchFooter + | 183 kFontconfigMatchFooter + |
| 184 kFontconfigMatchPatternHeader + | 184 kFontconfigMatchPatternHeader + |
| 185 CreateFontconfigTestStanza("slant", "eq", "const", "italic") + | 185 CreateFontconfigTestStanza("slant", "eq", "const", "italic") + |
| 186 CreateFontconfigEditStanza("hinting", "bool", "false") + | 186 CreateFontconfigEditStanza("hinting", "bool", "false") + |
| 187 kFontconfigMatchFooter + | 187 kFontconfigMatchFooter + |
| 188 kFontconfigFileFooter)); | 188 kFontconfigFileFooter)); |
| 189 | 189 |
| 190 FontRenderParamsQuery query(false); | 190 FontRenderParamsQuery query(false); |
| 191 query.style = Font::NORMAL; | 191 query.style = Font::NORMAL; |
| 192 FontRenderParams params = GetFontRenderParams(query, NULL); | 192 FontRenderParams params = GetCurrentFontRenderParams(query, NULL); |
| 193 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); | 193 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); |
| 194 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, | 194 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, |
| 195 params.subpixel_rendering); | 195 params.subpixel_rendering); |
| 196 | 196 |
| 197 query.style = Font::BOLD; | 197 query.style = Font::BOLD; |
| 198 params = GetFontRenderParams(query, NULL); | 198 params = GetCurrentFontRenderParams(query, NULL); |
| 199 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); | 199 EXPECT_EQ(FontRenderParams::HINTING_SLIGHT, params.hinting); |
| 200 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, | 200 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, |
| 201 params.subpixel_rendering); | 201 params.subpixel_rendering); |
| 202 | 202 |
| 203 query.style = Font::ITALIC; | 203 query.style = Font::ITALIC; |
| 204 params = GetFontRenderParams(query, NULL); | 204 params = GetCurrentFontRenderParams(query, NULL); |
| 205 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting); | 205 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting); |
| 206 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, | 206 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_RGB, |
| 207 params.subpixel_rendering); | 207 params.subpixel_rendering); |
| 208 | 208 |
| 209 query.style = Font::BOLD | Font::ITALIC; | 209 query.style = Font::BOLD | Font::ITALIC; |
| 210 params = GetFontRenderParams(query, NULL); | 210 params = GetCurrentFontRenderParams(query, NULL); |
| 211 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting); | 211 EXPECT_EQ(FontRenderParams::HINTING_NONE, params.hinting); |
| 212 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, | 212 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, |
| 213 params.subpixel_rendering); | 213 params.subpixel_rendering); |
| 214 } | 214 } |
| 215 | 215 |
| 216 TEST_F(FontRenderParamsTest, Scalable) { | 216 TEST_F(FontRenderParamsTest, Scalable) { |
| 217 // Load a config that only enables antialiasing for scalable fonts. | 217 // Load a config that only enables antialiasing for scalable fonts. |
| 218 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), | 218 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), |
| 219 std::string(kFontconfigFileHeader) + | 219 std::string(kFontconfigFileHeader) + |
| 220 kFontconfigMatchPatternHeader + | 220 kFontconfigMatchPatternHeader + |
| 221 CreateFontconfigEditStanza("antialias", "bool", "false") + | 221 CreateFontconfigEditStanza("antialias", "bool", "false") + |
| 222 kFontconfigMatchFooter + | 222 kFontconfigMatchFooter + |
| 223 kFontconfigMatchPatternHeader + | 223 kFontconfigMatchPatternHeader + |
| 224 CreateFontconfigTestStanza("scalable", "eq", "bool", "true") + | 224 CreateFontconfigTestStanza("scalable", "eq", "bool", "true") + |
| 225 CreateFontconfigEditStanza("antialias", "bool", "true") + | 225 CreateFontconfigEditStanza("antialias", "bool", "true") + |
| 226 kFontconfigMatchFooter + | 226 kFontconfigMatchFooter + |
| 227 kFontconfigFileFooter)); | 227 kFontconfigFileFooter)); |
| 228 | 228 |
| 229 // Check that we specifically ask how scalable fonts should be rendered. | 229 // Check that we specifically ask how scalable fonts should be rendered. |
| 230 FontRenderParams params = GetFontRenderParams( | 230 FontRenderParams params = |
| 231 FontRenderParamsQuery(false), NULL); | 231 GetCurrentFontRenderParams(FontRenderParamsQuery(false), NULL); |
| 232 EXPECT_TRUE(params.antialiasing); | 232 EXPECT_TRUE(params.antialiasing); |
| 233 } | 233 } |
| 234 | 234 |
| 235 TEST_F(FontRenderParamsTest, UseBitmaps) { | 235 TEST_F(FontRenderParamsTest, UseBitmaps) { |
| 236 ASSERT_TRUE(LoadSystemFont("arial.ttf")); | 236 ASSERT_TRUE(LoadSystemFont("arial.ttf")); |
| 237 // Load a config that enables embedded bitmaps for fonts <= 10 pixels. | 237 // Load a config that enables embedded bitmaps for fonts <= 10 pixels. |
| 238 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), | 238 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), |
| 239 std::string(kFontconfigFileHeader) + | 239 std::string(kFontconfigFileHeader) + |
| 240 kFontconfigMatchPatternHeader + | 240 kFontconfigMatchPatternHeader + |
| 241 CreateFontconfigEditStanza("embeddedbitmap", "bool", "false") + | 241 CreateFontconfigEditStanza("embeddedbitmap", "bool", "false") + |
| 242 kFontconfigMatchFooter + | 242 kFontconfigMatchFooter + |
| 243 kFontconfigMatchPatternHeader + | 243 kFontconfigMatchPatternHeader + |
| 244 CreateFontconfigTestStanza("pixelsize", "less_eq", "double", "10") + | 244 CreateFontconfigTestStanza("pixelsize", "less_eq", "double", "10") + |
| 245 CreateFontconfigEditStanza("embeddedbitmap", "bool", "true") + | 245 CreateFontconfigEditStanza("embeddedbitmap", "bool", "true") + |
| 246 kFontconfigMatchFooter + | 246 kFontconfigMatchFooter + |
| 247 kFontconfigFileFooter)); | 247 kFontconfigFileFooter)); |
| 248 | 248 |
| 249 FontRenderParamsQuery query(false); | 249 FontRenderParamsQuery query(false); |
| 250 FontRenderParams params = GetFontRenderParams(query, NULL); | 250 FontRenderParams params = GetCurrentFontRenderParams(query, NULL); |
| 251 EXPECT_FALSE(params.use_bitmaps); | 251 EXPECT_FALSE(params.use_bitmaps); |
| 252 | 252 |
| 253 query.pixel_size = 5; | 253 query.pixel_size = 5; |
| 254 params = GetFontRenderParams(query, NULL); | 254 params = GetCurrentFontRenderParams(query, NULL); |
| 255 EXPECT_TRUE(params.use_bitmaps); | 255 EXPECT_TRUE(params.use_bitmaps); |
| 256 } | 256 } |
| 257 | 257 |
| 258 TEST_F(FontRenderParamsTest, ForceFullHintingWhenAntialiasingIsDisabled) { | 258 TEST_F(FontRenderParamsTest, ForceFullHintingWhenAntialiasingIsDisabled) { |
| 259 // Load a config that disables antialiasing and hinting while requesting | 259 // Load a config that disables antialiasing and hinting while requesting |
| 260 // subpixel rendering. | 260 // subpixel rendering. |
| 261 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), | 261 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), |
| 262 std::string(kFontconfigFileHeader) + | 262 std::string(kFontconfigFileHeader) + |
| 263 kFontconfigMatchPatternHeader + | 263 kFontconfigMatchPatternHeader + |
| 264 CreateFontconfigEditStanza("antialias", "bool", "false") + | 264 CreateFontconfigEditStanza("antialias", "bool", "false") + |
| 265 CreateFontconfigEditStanza("hinting", "bool", "false") + | 265 CreateFontconfigEditStanza("hinting", "bool", "false") + |
| 266 CreateFontconfigEditStanza("hintstyle", "const", "hintnone") + | 266 CreateFontconfigEditStanza("hintstyle", "const", "hintnone") + |
| 267 CreateFontconfigEditStanza("rgba", "const", "rgb") + | 267 CreateFontconfigEditStanza("rgba", "const", "rgb") + |
| 268 kFontconfigMatchFooter + | 268 kFontconfigMatchFooter + |
| 269 kFontconfigFileFooter)); | 269 kFontconfigFileFooter)); |
| 270 | 270 |
| 271 // Full hinting should be forced. See the comment in GetFontRenderParams() for | 271 // Full hinting should be forced. See the comment in |
| 272 // GetCurrentFontRenderParams() for |
| 272 // more information. | 273 // more information. |
| 273 FontRenderParams params = GetFontRenderParams( | 274 FontRenderParams params = |
| 274 FontRenderParamsQuery(false), NULL); | 275 GetCurrentFontRenderParams(FontRenderParamsQuery(false), NULL); |
| 275 EXPECT_FALSE(params.antialiasing); | 276 EXPECT_FALSE(params.antialiasing); |
| 276 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); | 277 EXPECT_EQ(FontRenderParams::HINTING_FULL, params.hinting); |
| 277 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, | 278 EXPECT_EQ(FontRenderParams::SUBPIXEL_RENDERING_NONE, |
| 278 params.subpixel_rendering); | 279 params.subpixel_rendering); |
| 279 EXPECT_FALSE(params.subpixel_positioning); | 280 EXPECT_FALSE(params.subpixel_positioning); |
| 280 } | 281 } |
| 281 | 282 |
| 282 #if defined(OS_CHROMEOS) | |
| 283 TEST_F(FontRenderParamsTest, ForceSubpixelPositioning) { | |
| 284 { | |
| 285 FontRenderParams params = | |
| 286 GetFontRenderParams(FontRenderParamsQuery(false), NULL); | |
| 287 EXPECT_TRUE(params.antialiasing); | |
| 288 EXPECT_FALSE(params.subpixel_positioning); | |
| 289 SetFontRenderParamsDeviceScaleFactor(1.0f); | |
| 290 } | |
| 291 ClearFontRenderParamsCacheForTest(); | |
| 292 SetFontRenderParamsDeviceScaleFactor(1.25f); | |
| 293 // Subpixel positioning should be forced. | |
| 294 { | |
| 295 FontRenderParams params = | |
| 296 GetFontRenderParams(FontRenderParamsQuery(false), NULL); | |
| 297 EXPECT_TRUE(params.antialiasing); | |
| 298 EXPECT_TRUE(params.subpixel_positioning); | |
| 299 SetFontRenderParamsDeviceScaleFactor(1.0f); | |
| 300 } | |
| 301 } | |
| 302 #endif | |
| 303 | |
| 304 TEST_F(FontRenderParamsTest, OnlySetConfiguredValues) { | 283 TEST_F(FontRenderParamsTest, OnlySetConfiguredValues) { |
| 305 // Configure the LinuxFontDelegate (which queries GtkSettings on desktop | 284 // Configure the LinuxFontDelegate (which queries GtkSettings on desktop |
| 306 // Linux) to request subpixel rendering. | 285 // Linux) to request subpixel rendering. |
| 307 FontRenderParams system_params; | 286 FontRenderParams system_params; |
| 308 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB; | 287 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB; |
| 309 test_font_delegate_.set_params(system_params); | 288 test_font_delegate_.set_params(system_params); |
| 310 | 289 |
| 311 // Load a Fontconfig config that enables antialiasing but doesn't say anything | 290 // Load a Fontconfig config that enables antialiasing but doesn't say anything |
| 312 // about subpixel rendering. | 291 // about subpixel rendering. |
| 313 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), | 292 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), |
| 314 std::string(kFontconfigFileHeader) + | 293 std::string(kFontconfigFileHeader) + |
| 315 kFontconfigMatchPatternHeader + | 294 kFontconfigMatchPatternHeader + |
| 316 CreateFontconfigEditStanza("antialias", "bool", "true") + | 295 CreateFontconfigEditStanza("antialias", "bool", "true") + |
| 317 kFontconfigMatchFooter + | 296 kFontconfigMatchFooter + |
| 318 kFontconfigFileFooter)); | 297 kFontconfigFileFooter)); |
| 319 | 298 |
| 320 // The subpixel rendering setting from the delegate should make it through. | 299 // The subpixel rendering setting from the delegate should make it through. |
| 321 FontRenderParams params = GetFontRenderParams( | 300 FontRenderParams params = |
| 322 FontRenderParamsQuery(false), NULL); | 301 GetCurrentFontRenderParams(FontRenderParamsQuery(false), NULL); |
| 323 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering); | 302 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering); |
| 324 } | 303 } |
| 325 | 304 |
| 326 TEST_F(FontRenderParamsTest, NoFontconfigMatch) { | 305 TEST_F(FontRenderParamsTest, NoFontconfigMatch) { |
| 327 // Don't load a Fontconfig configuration. | 306 // Don't load a Fontconfig configuration. |
| 328 FontRenderParams system_params; | 307 FontRenderParams system_params; |
| 329 system_params.antialiasing = true; | 308 system_params.antialiasing = true; |
| 330 system_params.hinting = FontRenderParams::HINTING_MEDIUM; | 309 system_params.hinting = FontRenderParams::HINTING_MEDIUM; |
| 331 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB; | 310 system_params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_RGB; |
| 332 test_font_delegate_.set_params(system_params); | 311 test_font_delegate_.set_params(system_params); |
| 333 | 312 |
| 334 FontRenderParamsQuery query(false); | 313 FontRenderParamsQuery query(false); |
| 335 query.families.push_back("Arial"); | 314 query.families.push_back("Arial"); |
| 336 query.families.push_back("Times New Roman"); | 315 query.families.push_back("Times New Roman"); |
| 337 query.pixel_size = 10; | 316 query.pixel_size = 10; |
| 338 std::string suggested_family; | 317 std::string suggested_family; |
| 339 FontRenderParams params = GetFontRenderParams(query, &suggested_family); | 318 FontRenderParams params = |
| 319 GetCurrentFontRenderParams(query, &suggested_family); |
| 340 | 320 |
| 341 // The system params and the first requested family should be returned. | 321 // The system params and the first requested family should be returned. |
| 342 EXPECT_EQ(system_params.antialiasing, params.antialiasing); | 322 EXPECT_EQ(system_params.antialiasing, params.antialiasing); |
| 343 EXPECT_EQ(system_params.hinting, params.hinting); | 323 EXPECT_EQ(system_params.hinting, params.hinting); |
| 344 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering); | 324 EXPECT_EQ(system_params.subpixel_rendering, params.subpixel_rendering); |
| 345 EXPECT_EQ(query.families[0], suggested_family); | 325 EXPECT_EQ(query.families[0], suggested_family); |
| 346 } | 326 } |
| 347 | 327 |
| 348 TEST_F(FontRenderParamsTest, MissingFamily) { | 328 TEST_F(FontRenderParamsTest, MissingFamily) { |
| 349 // With Arial and Verdana installed, request (in order) Helvetica, Arial, and | 329 // With Arial and Verdana installed, request (in order) Helvetica, Arial, and |
| 350 // Verdana and check that Arial is returned. | 330 // Verdana and check that Arial is returned. |
| 351 ASSERT_TRUE(LoadSystemFont("arial.ttf")); | 331 ASSERT_TRUE(LoadSystemFont("arial.ttf")); |
| 352 ASSERT_TRUE(LoadSystemFont("verdana.ttf")); | 332 ASSERT_TRUE(LoadSystemFont("verdana.ttf")); |
| 353 FontRenderParamsQuery query(false); | 333 FontRenderParamsQuery query(false); |
| 354 query.families.push_back("Helvetica"); | 334 query.families.push_back("Helvetica"); |
| 355 query.families.push_back("Arial"); | 335 query.families.push_back("Arial"); |
| 356 query.families.push_back("Verdana"); | 336 query.families.push_back("Verdana"); |
| 357 std::string suggested_family; | 337 std::string suggested_family; |
| 358 GetFontRenderParams(query, &suggested_family); | 338 GetCurrentFontRenderParams(query, &suggested_family); |
| 359 EXPECT_EQ("Arial", suggested_family); | 339 EXPECT_EQ("Arial", suggested_family); |
| 360 } | 340 } |
| 361 | 341 |
| 362 TEST_F(FontRenderParamsTest, SubstituteFamily) { | 342 TEST_F(FontRenderParamsTest, SubstituteFamily) { |
| 363 // Configure Fontconfig to use Verdana for both Helvetica and Arial. | 343 // Configure Fontconfig to use Verdana for both Helvetica and Arial. |
| 364 ASSERT_TRUE(LoadSystemFont("arial.ttf")); | 344 ASSERT_TRUE(LoadSystemFont("arial.ttf")); |
| 365 ASSERT_TRUE(LoadSystemFont("verdana.ttf")); | 345 ASSERT_TRUE(LoadSystemFont("verdana.ttf")); |
| 366 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), | 346 ASSERT_TRUE(LoadConfigDataIntoFontconfig(temp_dir_.path(), |
| 367 std::string(kFontconfigFileHeader) + | 347 std::string(kFontconfigFileHeader) + |
| 368 CreateFontconfigAliasStanza("Helvetica", "Verdana") + | 348 CreateFontconfigAliasStanza("Helvetica", "Verdana") + |
| 369 kFontconfigMatchPatternHeader + | 349 kFontconfigMatchPatternHeader + |
| 370 CreateFontconfigTestStanza("family", "eq", "string", "Arial") + | 350 CreateFontconfigTestStanza("family", "eq", "string", "Arial") + |
| 371 CreateFontconfigEditStanza("family", "string", "Verdana") + | 351 CreateFontconfigEditStanza("family", "string", "Verdana") + |
| 372 kFontconfigMatchFooter + | 352 kFontconfigMatchFooter + |
| 373 kFontconfigFileFooter)); | 353 kFontconfigFileFooter)); |
| 374 | 354 |
| 375 FontRenderParamsQuery query(false); | 355 FontRenderParamsQuery query(false); |
| 376 query.families.push_back("Helvetica"); | 356 query.families.push_back("Helvetica"); |
| 377 std::string suggested_family; | 357 std::string suggested_family; |
| 378 GetFontRenderParams(query, &suggested_family); | 358 GetCurrentFontRenderParams(query, &suggested_family); |
| 379 EXPECT_EQ("Verdana", suggested_family); | 359 EXPECT_EQ("Verdana", suggested_family); |
| 380 | 360 |
| 381 query.families.clear(); | 361 query.families.clear(); |
| 382 query.families.push_back("Arial"); | 362 query.families.push_back("Arial"); |
| 383 suggested_family.clear(); | 363 suggested_family.clear(); |
| 384 GetFontRenderParams(query, &suggested_family); | 364 GetCurrentFontRenderParams(query, &suggested_family); |
| 385 EXPECT_EQ("Verdana", suggested_family); | 365 EXPECT_EQ("Verdana", suggested_family); |
| 386 } | 366 } |
| 387 | 367 |
| 388 } // namespace gfx | 368 } // namespace gfx |
| OLD | NEW |