From c8db7da36a3ae7b520bda4ea74dd1e1e0acb40a4 Mon Sep 17 00:00:00 2001 From: Ulf Nilsson Date: Wed, 11 May 2016 23:52:33 +0200 Subject: [PATCH] Fix inline size adjustment when stripping trailing whitespace from fragments The whitespace range was not properly shifted which caused us to adjust the fragment's inline size by the advance of a different set of characters. This was causing justified text lines to be too long or too short. --- components/layout/fragment.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 23fe90d7eed..1d9b5056c06 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -2401,7 +2401,8 @@ impl Fragment { } let whitespace_start = ByteIndex(trailing_whitespace_start_byte as isize); let whitespace_len = scanned_text_fragment_info.range.length() - whitespace_start; - let whitespace_range = Range::new(whitespace_start, whitespace_len); + let mut whitespace_range = Range::new(whitespace_start, whitespace_len); + whitespace_range.shift_by(scanned_text_fragment_info.range.begin()); let text_bounds = scanned_text_fragment_info.run .metrics_for_range(&whitespace_range)