diff --git a/Tests/images/multiline_text_justify_last_line.png b/Tests/images/multiline_text_justify_last_line.png new file mode 100644 index 000000000..bcc1afd72 Binary files /dev/null and b/Tests/images/multiline_text_justify_last_line.png differ diff --git a/Tests/images/multiline_text_justify_single_word.png b/Tests/images/multiline_text_justify_single_word.png deleted file mode 100644 index e124e91f5..000000000 Binary files a/Tests/images/multiline_text_justify_single_word.png and /dev/null differ diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index a6a8cdfc6..f99275925 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -267,16 +267,19 @@ def test_render_multiline_text_align( assert_image_similar_tofile(im, f"Tests/images/multiline_text{ext}.png", 0.01) -def test_render_multiline_text_align_justify_single_word( +def test_render_multiline_text_align_justify_last_line( font: ImageFont.FreeTypeFont, ) -> None: - im = Image.new("RGB", (185, 65)) + im = Image.new("RGB", (280, 60)) draw = ImageDraw.Draw(im) draw.multiline_text( - (0, 0), "hey you\nyou are awesome\nthis", font=font, align="justify" + (0, 0), + "hey you you are awesome\nthis\nlooks awkward", + font=font, + align="justify", ) - assert_image_equal_tofile(im, "Tests/images/multiline_text_justify_single_word.png") + assert_image_equal_tofile(im, "Tests/images/multiline_text_justify_last_line.png") def test_unknown_align(font: ImageFont.FreeTypeFont) -> None: diff --git a/src/PIL/ImageDraw.py b/src/PIL/ImageDraw.py index e865f4516..47ae575c9 100644 --- a/src/PIL/ImageDraw.py +++ b/src/PIL/ImageDraw.py @@ -770,7 +770,7 @@ class ImageDraw: msg = 'align must be "left", "center", "right" or "justify"' raise ValueError(msg) - if align == "justify" and width_difference != 0: + if align == "justify" and width_difference != 0 and idx != len(lines) - 1: words = line.split(" " if isinstance(text, str) else b" ") if len(words) > 1: word_widths = [