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

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

Issue 943093002: Make bigger string size in RenderTextHarfBuzz. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments addressed Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/render_text.h" 5 #include "ui/gfx/render_text.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/i18n/break_iterator.h" 10 #include "base/i18n/break_iterator.h"
(...skipping 1357 matching lines...) Expand 10 before | Expand all | Expand 10 after
1368 render_text->SetDisplayRect(Rect(0, 0, 0, font_list.GetHeight())); 1368 render_text->SetDisplayRect(Rect(0, 0, 0, font_list.GetHeight()));
1369 1369
1370 // The empty string respects FontList metrics for non-zero height 1370 // The empty string respects FontList metrics for non-zero height
1371 // and baseline. 1371 // and baseline.
1372 render_text->SetText(base::string16()); 1372 render_text->SetText(base::string16());
1373 EXPECT_EQ(font_list.GetHeight(), render_text->GetStringSize().height()); 1373 EXPECT_EQ(font_list.GetHeight(), render_text->GetStringSize().height());
1374 EXPECT_EQ(0, render_text->GetStringSize().width()); 1374 EXPECT_EQ(0, render_text->GetStringSize().width());
1375 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline()); 1375 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline());
1376 1376
1377 render_text->SetText(UTF8ToUTF16(" ")); 1377 render_text->SetText(UTF8ToUTF16(" "));
1378 EXPECT_EQ(font_list.GetHeight(), render_text->GetStringSize().height()); 1378 // If the text is not empty, |render_text|'s height could be slightly bigger
msw 2015/02/26 00:47:21 nit: // |render_text| may be taller than the fon
1379 // than the font height because the font height is calculated for the distance
1380 // between the ascent and descent while |render_text| height is computed from
1381 // the top and the bottom.
1382 EXPECT_LE(font_list.GetHeight(), render_text->GetStringSize().height());
1379 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline()); 1383 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline());
1380 } 1384 }
1381 #endif // !defined(OS_MACOSX) 1385 #endif // !defined(OS_MACOSX)
1382 1386
1383 TEST_F(RenderTextTest, StringSizeRespectsFontListMetrics) { 1387 TEST_F(RenderTextTest, StringSizeRespectsFontListMetrics) {
1384 // Check that Arial and Symbol have different font metrics. 1388 // Check that Arial and Symbol have different font metrics.
1385 Font arial_font("Arial", 16); 1389 Font arial_font("Arial", 16);
1386 ASSERT_EQ("arial", 1390 ASSERT_EQ("arial",
1387 base::StringToLowerASCII(arial_font.GetActualFontNameForTesting())); 1391 base::StringToLowerASCII(arial_font.GetActualFontNameForTesting()));
1388 Font symbol_font("Symbol", 16); 1392 Font symbol_font("Symbol", 16);
(...skipping 19 matching lines...) Expand all
1408 } 1412 }
1409 ASSERT_LT(smaller_font.GetHeight(), larger_font.GetHeight()); 1413 ASSERT_LT(smaller_font.GetHeight(), larger_font.GetHeight());
1410 ASSERT_LT(smaller_font.GetBaseline(), larger_font.GetBaseline()); 1414 ASSERT_LT(smaller_font.GetBaseline(), larger_font.GetBaseline());
1411 1415
1412 // Check |smaller_font_text| is rendered with the smaller font. 1416 // Check |smaller_font_text| is rendered with the smaller font.
1413 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); 1417 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1414 render_text->SetText(UTF8ToUTF16(smaller_font_text)); 1418 render_text->SetText(UTF8ToUTF16(smaller_font_text));
1415 render_text->SetFontList(FontList(smaller_font)); 1419 render_text->SetFontList(FontList(smaller_font));
1416 render_text->SetDisplayRect(Rect(0, 0, 0, 1420 render_text->SetDisplayRect(Rect(0, 0, 0,
1417 render_text->font_list().GetHeight())); 1421 render_text->font_list().GetHeight()));
1418 EXPECT_EQ(smaller_font.GetHeight(), render_text->GetStringSize().height()); 1422 // |render_text| height may not be exactly same to |smaller_font|'s height
msw 2015/02/26 00:47:21 nit: // |render_text| may be taller than the fon
1423 // considering the gap between the top and the ascent.
1424 // See http://crbug.com/459812
1425 EXPECT_LE(smaller_font.GetHeight(), render_text->GetStringSize().height());
1419 EXPECT_EQ(smaller_font.GetBaseline(), render_text->GetBaseline()); 1426 EXPECT_EQ(smaller_font.GetBaseline(), render_text->GetBaseline());
1420 1427
1421 // Layout the same text with mixed fonts. The text should be rendered with 1428 // Layout the same text with mixed fonts. The text should be rendered with
1422 // the smaller font, but the height and baseline are determined with the 1429 // the smaller font, but the height and baseline are determined with the
1423 // metrics of the font list, which is equal to the larger font. 1430 // metrics of the font list, which is equal to the larger font.
1424 std::vector<Font> fonts; 1431 std::vector<Font> fonts;
1425 fonts.push_back(smaller_font); // The primary font is the smaller font. 1432 fonts.push_back(smaller_font); // The primary font is the smaller font.
1426 fonts.push_back(larger_font); 1433 fonts.push_back(larger_font);
1427 const FontList font_list(fonts); 1434 const FontList font_list(fonts);
1428 render_text->SetFontList(font_list); 1435 render_text->SetFontList(font_list);
1429 render_text->SetDisplayRect(Rect(0, 0, 0, 1436 render_text->SetDisplayRect(Rect(0, 0, 0,
1430 render_text->font_list().GetHeight())); 1437 render_text->font_list().GetHeight()));
1431 EXPECT_LT(smaller_font.GetHeight(), render_text->GetStringSize().height()); 1438 EXPECT_LT(smaller_font.GetHeight(), render_text->GetStringSize().height());
1432 EXPECT_LT(smaller_font.GetBaseline(), render_text->GetBaseline()); 1439 EXPECT_LT(smaller_font.GetBaseline(), render_text->GetBaseline());
1433 EXPECT_EQ(font_list.GetHeight(), render_text->GetStringSize().height()); 1440 // Again, it could be slightly different from font's height, see above.
msw 2015/02/26 00:47:21 nit: // |render_text| may be taller than the font
1441 EXPECT_LE(font_list.GetHeight(), render_text->GetStringSize().height());
1434 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline()); 1442 EXPECT_EQ(font_list.GetBaseline(), render_text->GetBaseline());
1435 } 1443 }
1436 1444
1437 TEST_F(RenderTextTest, MinLineHeight) { 1445 TEST_F(RenderTextTest, MinLineHeight) {
1438 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); 1446 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1439 1447
1440 render_text->SetText(ASCIIToUTF16("Hello!")); 1448 render_text->SetText(ASCIIToUTF16("Hello!"));
1441 SizeF default_size = render_text->GetStringSizeF(); 1449 SizeF default_size = render_text->GetStringSizeF();
1442 ASSERT_NE(0, default_size.height()); 1450 ASSERT_NE(0, default_size.height());
1443 ASSERT_NE(0, default_size.width()); 1451 ASSERT_NE(0, default_size.width());
1444 1452
1445 render_text->SetMinLineHeight(default_size.height() / 2); 1453 render_text->SetMinLineHeight(default_size.height() / 2);
1446 EXPECT_EQ(default_size.ToString(), render_text->GetStringSizeF().ToString()); 1454 EXPECT_EQ(default_size.ToString(), render_text->GetStringSizeF().ToString());
1447 1455
1448 render_text->SetMinLineHeight(default_size.height() * 2); 1456 render_text->SetMinLineHeight(default_size.height() * 2);
1449 SizeF taller_size = render_text->GetStringSizeF(); 1457 SizeF taller_size = render_text->GetStringSizeF();
1450 EXPECT_EQ(default_size.height() * 2, taller_size.height()); 1458 EXPECT_LT(default_size.height(), taller_size.height());
1451 EXPECT_EQ(default_size.width(), taller_size.width()); 1459 EXPECT_EQ(default_size.width(), taller_size.width());
1452 } 1460 }
1453 1461
1454 TEST_F(RenderTextTest, SetFontList) { 1462 TEST_F(RenderTextTest, SetFontList) {
1455 scoped_ptr<RenderText> render_text(RenderText::CreateInstance()); 1463 scoped_ptr<RenderText> render_text(RenderText::CreateInstance());
1456 render_text->SetFontList(FontList("Arial,Symbol, 13px")); 1464 render_text->SetFontList(FontList("Arial,Symbol, 13px"));
1457 const std::vector<Font>& fonts = render_text->font_list().GetFonts(); 1465 const std::vector<Font>& fonts = render_text->font_list().GetFonts();
1458 ASSERT_EQ(2U, fonts.size()); 1466 ASSERT_EQ(2U, fonts.size());
1459 EXPECT_EQ("Arial", fonts[0].GetFontName()); 1467 EXPECT_EQ("Arial", fonts[0].GetFontName());
1460 EXPECT_EQ("Symbol", fonts[1].GetFontName()); 1468 EXPECT_EQ("Symbol", fonts[1].GetFontName());
(...skipping 1141 matching lines...) Expand 10 before | Expand all | Expand 10 after
2602 EXPECT_LT(220U, color_utils::GetLuminanceForColor(color)) << string; 2610 EXPECT_LT(220U, color_utils::GetLuminanceForColor(color)) << string;
2603 for (int x = 1; x < kTestWidth; ++x) { 2611 for (int x = 1; x < kTestWidth; ++x) {
2604 color = buffer[width + x + y * kCanvasSize.width()]; 2612 color = buffer[width + x + y * kCanvasSize.width()];
2605 EXPECT_EQ(SK_ColorWHITE, color) << string; 2613 EXPECT_EQ(SK_ColorWHITE, color) << string;
2606 } 2614 }
2607 } 2615 }
2608 } 2616 }
2609 } 2617 }
2610 2618
2611 } // namespace gfx 2619 } // namespace gfx
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698