From b5b92f94ecf1d75f80c23b5b842e40e33b305acb Mon Sep 17 00:00:00 2001 From: Gary Qian Date: Tue, 12 Feb 2019 03:32:59 -0800 Subject: [PATCH] Use all font managers to discover fonts for strut. (flutter/engine#7734) --- .../txt/src/txt/font_collection.cc | 20 ---- .../third_party/txt/src/txt/font_collection.h | 4 - .../third_party/txt/src/txt/paragraph.cc | 24 ++-- .../txt/tests/paragraph_unittests.cc | 110 +++++++++--------- 4 files changed, 68 insertions(+), 90 deletions(-) diff --git a/engine/src/flutter/third_party/txt/src/txt/font_collection.cc b/engine/src/flutter/third_party/txt/src/txt/font_collection.cc index 1592d9227cc..ff687726ebe 100644 --- a/engine/src/flutter/third_party/txt/src/txt/font_collection.cc +++ b/engine/src/flutter/third_party/txt/src/txt/font_collection.cc @@ -178,26 +178,6 @@ FontCollection::GetMinikinFontCollectionForFamilies( return font_collection; } -minikin::MinikinFont* FontCollection::GetMinikinFontForFamilies( - const std::vector& font_families, - minikin::FontStyle style) { - std::shared_ptr font_family = nullptr; - for (std::string family_name : font_families) { - font_family = FindFontFamilyInManagers(family_name); - if (font_family != nullptr) { - break; - } - } - if (font_family == nullptr) { - const auto default_font_family = GetDefaultFontFamily(); - font_family = FindFontFamilyInManagers(default_font_family); - } - if (font_family == nullptr) { - return nullptr; - } - return font_family.get()->getClosestMatch(style).font; -} - std::shared_ptr FontCollection::FindFontFamilyInManagers( const std::string& family_name) { // Search for the font family in each font manager. diff --git a/engine/src/flutter/third_party/txt/src/txt/font_collection.h b/engine/src/flutter/third_party/txt/src/txt/font_collection.h index fe05c9f6d97..c98b4d29ca0 100644 --- a/engine/src/flutter/third_party/txt/src/txt/font_collection.h +++ b/engine/src/flutter/third_party/txt/src/txt/font_collection.h @@ -49,10 +49,6 @@ class FontCollection : public std::enable_shared_from_this { const std::vector& font_families, const std::string& locale); - minikin::MinikinFont* GetMinikinFontForFamilies( - const std::vector& font_families, - minikin::FontStyle style); - // Provides a FontFamily that contains glyphs for ch. This caches previously // matched fonts. Also see FontCollection::DoMatchFallbackFont. const std::shared_ptr& MatchFallbackFont( diff --git a/engine/src/flutter/third_party/txt/src/txt/paragraph.cc b/engine/src/flutter/third_party/txt/src/txt/paragraph.cc index 65efccc8a1f..5ba7e648b31 100644 --- a/engine/src/flutter/third_party/txt/src/txt/paragraph.cc +++ b/engine/src/flutter/third_party/txt/src/txt/paragraph.cc @@ -441,18 +441,20 @@ void Paragraph::ComputeStrut(StrutMetrics* strut, SkFont& font) { // force_strut makes all lines have exactly the strut metrics, and ignores all // actual metrics. We only force the strut if the strut is non-zero and valid. strut->force_strut = paragraph_style_.force_strut_height && valid_strut; - const FontSkia* font_skia = - static_cast(font_collection_->GetMinikinFontForFamilies( - paragraph_style_.strut_font_families, - // TODO(garyq): The variant is currently set to 0 (default) as we do - // not have a property to set it with. We should eventually support - // default, compact, and elegant variants. - minikin::FontStyle( - 0, GetWeight(paragraph_style_.strut_font_weight), - paragraph_style_.strut_font_style == FontStyle::italic))); + minikin::FontStyle minikin_font_style( + 0, GetWeight(paragraph_style_.strut_font_weight), + paragraph_style_.strut_font_style == FontStyle::italic); - if (font_skia != nullptr) { - font.setTypeface(font_skia->GetSkTypeface()); + std::shared_ptr collection = + font_collection_->GetMinikinFontCollectionForFamilies( + paragraph_style_.strut_font_families, ""); + if (!collection) { + return; + } + minikin::FakedFont faked_font = collection->baseFontFaked(minikin_font_style); + + if (faked_font.font != nullptr) { + font.setTypeface(static_cast(faked_font.font)->GetSkTypeface()); font.setSize(paragraph_style_.strut_font_size); SkFontMetrics strut_metrics; font.getMetrics(&strut_metrics); diff --git a/engine/src/flutter/third_party/txt/tests/paragraph_unittests.cc b/engine/src/flutter/third_party/txt/tests/paragraph_unittests.cc index 5e37ae1d330..1f0c98ef77a 100644 --- a/engine/src/flutter/third_party/txt/tests/paragraph_unittests.cc +++ b/engine/src/flutter/third_party/txt/tests/paragraph_unittests.cc @@ -2755,7 +2755,7 @@ TEST_F(ParagraphTest, FontFallbackParagraph) { // // TODO(garyq): Re-enable strut tests, allow font metric fakery, or // consolidate skia font metric behavior. -TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { +TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph1)) { // The chinese extra height should be absorbed by the strut. const char* text = "01234満毎冠p来É本可\nabcd\n満毎É行p昼本可"; auto icu_text = icu::UnicodeString::fromUTF8(text); @@ -2767,7 +2767,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { paragraph_style.strut_font_families = std::vector(1, "BlahFake"); paragraph_style.strut_font_families.push_back("ahem"); paragraph_style.strut_font_size = 50; - paragraph_style.strut_height = 1.5; + paragraph_style.strut_height = 1.8; paragraph_style.strut_leading = 0.1; paragraph_style.strut_enabled = true; @@ -2781,7 +2781,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { text_style.font_weight = FontWeight::w500; text_style.word_spacing = 0; text_style.color = SK_ColorBLACK; - text_style.height = 1; + text_style.height = .5; builder.PushStyle(text_style); builder.AddText(u16_text); @@ -2820,9 +2820,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 34.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 84.5); boxes = paragraph->GetRectsForRange(0, 1, rect_height_max_style, rect_width_style); @@ -2831,9 +2831,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 34.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 95); boxes = paragraph->GetRectsForRange(6, 10, rect_height_style, rect_width_style); @@ -2842,9 +2842,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 34.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 84.5); boxes = paragraph->GetRectsForRange(6, 10, rect_height_max_style, rect_width_style); @@ -2853,9 +2853,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 34.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 95); boxes = paragraph->GetRectsForRange(14, 16, rect_height_max_style, rect_width_style); @@ -2864,9 +2864,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 208.31348); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 224.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 267); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 285); boxes = paragraph->GetRectsForRange(20, 25, rect_height_max_style, rect_width_style); @@ -2875,9 +2875,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 297.31348); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 319.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 356); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 380); ASSERT_TRUE(Snapshot()); } @@ -2887,7 +2887,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph1)) { // // TODO(garyq): Re-enable strut tests, allow font metric fakery, or // consolidate skia font metric behavior. -TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { +TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph2)) { // This string is all one size and smaller than the strut metrics. const char* text = "01234ABCDEFGH\nabcd\nABCDEFGH"; auto icu_text = icu::UnicodeString::fromUTF8(text); @@ -2949,9 +2949,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 33.229004); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 24); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 83.229004); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 74); boxes = paragraph->GetRectsForRange(0, 1, rect_height_max_style, rect_width_style); @@ -2960,9 +2960,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 33.229004); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 24); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 91); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80); boxes = paragraph->GetRectsForRange(6, 10, rect_height_style, rect_width_style); @@ -2971,9 +2971,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 33.229004); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 24); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 83.229004); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 74); boxes = paragraph->GetRectsForRange(6, 10, rect_height_max_style, rect_width_style); @@ -2982,9 +2982,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 33.229004); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 24); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 91); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80); boxes = paragraph->GetRectsForRange(14, 16, rect_height_max_style, rect_width_style); @@ -2993,9 +2993,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 215.229); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 184); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 273); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 240); boxes = paragraph->GetRectsForRange(20, 25, rect_height_max_style, rect_width_style); @@ -3004,9 +3004,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 306.229); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 264); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 364); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 320); ASSERT_TRUE(Snapshot()); } @@ -3016,7 +3016,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph2)) { // // TODO(garyq): Re-enable strut tests, allow font metric fakery, or // consolidate skia font metric behavior. -TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { +TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph3)) { // The strut is too small to absorb the extra chinese height, but the english // second line height is increased due to strut. const char* text = "01234満毎p行来昼本可\nabcd\n満毎冠行来昼本可"; @@ -3028,7 +3028,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { paragraph_style.max_lines = 10; paragraph_style.strut_font_families = std::vector(1, "ahem"); paragraph_style.strut_font_size = 50; - paragraph_style.strut_height = 1.1; + paragraph_style.strut_height = 1.2; paragraph_style.strut_enabled = true; txt::ParagraphBuilder builder(paragraph_style, GetTestFontCollection()); @@ -3079,9 +3079,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 10.526855); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 8); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 60.526855); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 58); boxes = paragraph->GetRectsForRange(0, 1, rect_height_max_style, rect_width_style); @@ -3090,9 +3090,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 10.526855); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 8); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 63); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 60); boxes = paragraph->GetRectsForRange(6, 10, rect_height_style, rect_width_style); @@ -3101,9 +3101,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 10.526855); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 8); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 60.526855); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 58); boxes = paragraph->GetRectsForRange(6, 10, rect_height_max_style, rect_width_style); @@ -3112,9 +3112,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 10.526855); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 8); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 63); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 60); boxes = paragraph->GetRectsForRange(14, 16, rect_height_max_style, rect_width_style); @@ -3123,9 +3123,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 136.52686); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 128); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 189); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 180); boxes = paragraph->GetRectsForRange(20, 25, rect_height_max_style, rect_width_style); @@ -3134,9 +3134,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 199.52686); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 188); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 252); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 240); ASSERT_TRUE(Snapshot()); } @@ -3146,7 +3146,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutParagraph3)) { // // TODO(garyq): Re-enable strut tests, allow font metric fakery, or // consolidate skia font metric behavior. -TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutForceParagraph)) { +TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutForceParagraph)) { // The strut is too small to absorb the extra chinese height, but the english // second line height is increased due to strut. const char* text = "01234満毎冠行来昼本可\nabcd\n満毎冠行来昼本可"; @@ -3210,9 +3210,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutForceParagraph)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 22.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 72.5); boxes = paragraph->GetRectsForRange(0, 1, rect_height_max_style, rect_width_style); @@ -3221,9 +3221,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutForceParagraph)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 22.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80); boxes = paragraph->GetRectsForRange(6, 10, rect_height_style, rect_width_style); @@ -3232,9 +3232,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutForceParagraph)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 22.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 72.5); boxes = paragraph->GetRectsForRange(6, 10, rect_height_max_style, rect_width_style); @@ -3243,9 +3243,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutForceParagraph)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 30.313477); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 22.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 89); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80); boxes = paragraph->GetRectsForRange(14, 16, rect_height_max_style, rect_width_style); @@ -3254,9 +3254,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutForceParagraph)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 208.31348); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 182.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 267); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 240); boxes = paragraph->GetRectsForRange(20, 25, rect_height_max_style, rect_width_style); @@ -3265,9 +3265,9 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(DISABLED_StrutForceParagraph)) { } EXPECT_EQ(boxes.size(), 1ull); EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50); - EXPECT_FLOAT_EQ(boxes[0].rect.top(), 297.31348); + EXPECT_FLOAT_EQ(boxes[0].rect.top(), 262.5); EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300); - EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 356); + EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 320); ASSERT_TRUE(Snapshot()); }