Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit f9a2fab

Browse files
authored
Fix RectHeightStyle::kMax ascent computation bug (#15106)
1 parent 3f52888 commit f9a2fab

File tree

3 files changed

+19
-20
lines changed

3 files changed

+19
-20
lines changed

third_party/txt/src/txt/paragraph_txt.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1753,8 +1753,7 @@ std::vector<Paragraph::TextBox> ParagraphTxt::GetRectsForRange(
17531753
} else if (rect_height_style == RectHeightStyle::kMax) {
17541754
for (const Paragraph::TextBox& box : kv.second.boxes) {
17551755
boxes.emplace_back(
1756-
SkRect::MakeLTRB(box.rect.fLeft,
1757-
line.baseline - line.unscaled_ascent,
1756+
SkRect::MakeLTRB(box.rect.fLeft, line.baseline - line.ascent,
17581757
box.rect.fRight, line.baseline + line.descent),
17591758
box.direction);
17601759
}

third_party/txt/src/txt/paragraph_txt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ class ParagraphTxt : public Paragraph {
146146
FRIEND_TEST(ParagraphTest, DISABLED_ArabicParagraph);
147147
FRIEND_TEST(ParagraphTest, SpacingParagraph);
148148
FRIEND_TEST(ParagraphTest, LongWordParagraph);
149-
FRIEND_TEST(ParagraphTest, KernScaleParagraph);
149+
FRIEND_TEST_LINUX_ONLY(ParagraphTest, KernScaleParagraph);
150150
FRIEND_TEST_WINDOWS_DISABLED(ParagraphTest, NewlineParagraph);
151151
FRIEND_TEST_LINUX_ONLY(ParagraphTest, EmojiParagraph);
152152
FRIEND_TEST_LINUX_ONLY(ParagraphTest, EmojiMultiLineRectsParagraph);

third_party/txt/tests/paragraph_unittests.cc

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4461,7 +4461,7 @@ TEST_F(ParagraphTest, LongWordParagraph) {
44614461
ASSERT_TRUE(Snapshot());
44624462
}
44634463

4464-
TEST_F(ParagraphTest, KernScaleParagraph) {
4464+
TEST_F(ParagraphTest, LINUX_ONLY(KernScaleParagraph)) {
44654465
float scale = 3.0f;
44664466

44674467
txt::ParagraphStyle paragraph_style;
@@ -5253,7 +5253,7 @@ TEST_F(ParagraphTest, LINUX_ONLY(StrutParagraph1)) {
52535253
}
52545254
EXPECT_EQ(boxes.size(), 1ull);
52555255
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5256-
EXPECT_NEAR(boxes[0].rect.top(), 34.5, 0.0001);
5256+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
52575257
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50);
52585258
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 95);
52595259

@@ -5276,7 +5276,7 @@ TEST_F(ParagraphTest, LINUX_ONLY(StrutParagraph1)) {
52765276
}
52775277
EXPECT_EQ(boxes.size(), 1ull);
52785278
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300);
5279-
EXPECT_NEAR(boxes[0].rect.top(), 34.5, 0.0001);
5279+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
52805280
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500);
52815281
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 95);
52825282

@@ -5287,7 +5287,7 @@ TEST_F(ParagraphTest, LINUX_ONLY(StrutParagraph1)) {
52875287
}
52885288
EXPECT_EQ(boxes.size(), 1ull);
52895289
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5290-
EXPECT_NEAR(boxes[0].rect.top(), 224.5, 0.0001);
5290+
EXPECT_NEAR(boxes[0].rect.top(), 190, 0.0001);
52915291
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100);
52925292
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 285);
52935293

@@ -5298,7 +5298,7 @@ TEST_F(ParagraphTest, LINUX_ONLY(StrutParagraph1)) {
52985298
}
52995299
EXPECT_EQ(boxes.size(), 1ull);
53005300
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50);
5301-
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 319.5);
5301+
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 285);
53025302
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300);
53035303
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 380);
53045304

@@ -5379,7 +5379,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph2)) {
53795379
}
53805380
EXPECT_EQ(boxes.size(), 1ull);
53815381
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5382-
EXPECT_NEAR(boxes[0].rect.top(), 24, 0.0001);
5382+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
53835383
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50);
53845384
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80);
53855385

@@ -5401,7 +5401,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph2)) {
54015401
}
54025402
EXPECT_EQ(boxes.size(), 1ull);
54035403
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300);
5404-
EXPECT_NEAR(boxes[0].rect.top(), 24, 0.0001);
5404+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
54055405
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500);
54065406
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80);
54075407

@@ -5412,7 +5412,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph2)) {
54125412
}
54135413
EXPECT_EQ(boxes.size(), 1ull);
54145414
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5415-
EXPECT_NEAR(boxes[0].rect.top(), 184, 0.0001);
5415+
EXPECT_NEAR(boxes[0].rect.top(), 160, 0.0001);
54165416
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100);
54175417
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 240);
54185418

@@ -5423,7 +5423,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph2)) {
54235423
}
54245424
EXPECT_EQ(boxes.size(), 1ull);
54255425
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50);
5426-
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 264);
5426+
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 240);
54275427
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300);
54285428
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 320);
54295429

@@ -5505,7 +5505,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph3)) {
55055505
}
55065506
EXPECT_EQ(boxes.size(), 1ull);
55075507
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5508-
EXPECT_NEAR(boxes[0].rect.top(), 8, 0.0001);
5508+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
55095509
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50);
55105510
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 60);
55115511

@@ -5527,7 +5527,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph3)) {
55275527
}
55285528
EXPECT_EQ(boxes.size(), 1ull);
55295529
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300);
5530-
EXPECT_NEAR(boxes[0].rect.top(), 8, 0.0001);
5530+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
55315531
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500);
55325532
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 60);
55335533

@@ -5538,7 +5538,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph3)) {
55385538
}
55395539
EXPECT_EQ(boxes.size(), 1ull);
55405540
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5541-
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 128);
5541+
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 120);
55425542
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100);
55435543
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 180);
55445544

@@ -5549,7 +5549,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutParagraph3)) {
55495549
}
55505550
EXPECT_EQ(boxes.size(), 1ull);
55515551
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50);
5552-
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 188);
5552+
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 180);
55535553
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300);
55545554
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 240);
55555555

@@ -5632,7 +5632,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutForceParagraph)) {
56325632
}
56335633
EXPECT_EQ(boxes.size(), 1ull);
56345634
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5635-
EXPECT_NEAR(boxes[0].rect.top(), 22.5, 0.0001);
5635+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
56365636
;
56375637
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 50);
56385638
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80);
@@ -5655,7 +5655,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutForceParagraph)) {
56555655
}
56565656
EXPECT_EQ(boxes.size(), 1ull);
56575657
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 300);
5658-
EXPECT_NEAR(boxes[0].rect.top(), 22.5, 0.0001);
5658+
EXPECT_NEAR(boxes[0].rect.top(), 0, 0.0001);
56595659
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 500);
56605660
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 80);
56615661

@@ -5666,7 +5666,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutForceParagraph)) {
56665666
}
56675667
EXPECT_EQ(boxes.size(), 1ull);
56685668
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 0);
5669-
EXPECT_NEAR(boxes[0].rect.top(), 182.5, 0.0001);
5669+
EXPECT_NEAR(boxes[0].rect.top(), 160, 0.0001);
56705670
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 100);
56715671
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 240);
56725672

@@ -5677,7 +5677,7 @@ TEST_F(ParagraphTest, DISABLE_ON_WINDOWS(StrutForceParagraph)) {
56775677
}
56785678
EXPECT_EQ(boxes.size(), 1ull);
56795679
EXPECT_FLOAT_EQ(boxes[0].rect.left(), 50);
5680-
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 262.5);
5680+
EXPECT_FLOAT_EQ(boxes[0].rect.top(), 240);
56815681
EXPECT_FLOAT_EQ(boxes[0].rect.right(), 300);
56825682
EXPECT_FLOAT_EQ(boxes[0].rect.bottom(), 320);
56835683

0 commit comments

Comments
 (0)