From 362d504011d921917334ec4585e020d8fcb992e5 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 25 May 2021 20:45:38 +1000 Subject: [PATCH] Raise an error if textbbox is used without a FreeTypeFont --- Tests/test_imagefont.py | 7 +++++++ src/PIL/ImageDraw.py | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index e843351ab..892bd0ed1 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -719,6 +719,13 @@ class TestImageFont: font.set_variation_by_axes([100]) self._check_text(font, "Tests/images/variation_tiny_axes.png", 32.5) + def test_textbbox_non_freetypefont(self): + im = Image.new("RGB", (200, 200)) + d = ImageDraw.Draw(im) + default_font = ImageFont.load_default() + with pytest.raises(ValueError): + d.textbbox((0, 0), "test", font=default_font) + @pytest.mark.parametrize( "anchor, left, left_old, top", ( diff --git a/src/PIL/ImageDraw.py b/src/PIL/ImageDraw.py index 0573eadac..717fb48a4 100644 --- a/src/PIL/ImageDraw.py +++ b/src/PIL/ImageDraw.py @@ -33,7 +33,7 @@ import math import numbers -from . import Image, ImageColor +from . import Image, ImageColor, ImageFont """ A simple 2D drawing interface for PIL images. @@ -646,6 +646,8 @@ class ImageDraw: if font is None: font = self.getfont() + if not isinstance(font, ImageFont.FreeTypeFont): + raise ValueError("Only supported for TrueType fonts") mode = "RGBA" if embedded_color else self.fontmode bbox = font.getbbox( text, mode, direction, features, language, stroke_width, anchor