diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart index 5a8f291a785..2321f805a2a 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart @@ -237,7 +237,7 @@ class CanvasParagraph implements ui.Paragraph { } final ParagraphLine line = lines[i]; - return ui.TextRange(start: line.startIndex, end: line.endIndex); + return ui.TextRange(start: line.startIndex, end: line.endIndex - line.trailingNewlines); } @override diff --git a/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart b/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart index c97ad8fb2b9..c7dbbecabf0 100644 --- a/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart +++ b/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart @@ -700,7 +700,8 @@ Future testMain() async { for (int i = 0; i < 11; i++) { expect( paragraph.getLineBoundary(ui.TextPosition(offset: i)), - const ui.TextRange(start: 0, end: 11), + // The "\n" is not included in the line boundary. + const ui.TextRange(start: 0, end: 10), reason: 'failed at offset $i', ); } @@ -709,7 +710,8 @@ Future testMain() async { for (int i = 11; i < 23; i++) { expect( paragraph.getLineBoundary(ui.TextPosition(offset: i)), - const ui.TextRange(start: 11, end: 23), + // The "\n" is not included in the line boundary. + const ui.TextRange(start: 11, end: 22), reason: 'failed at offset $i', ); }