diff --git a/PIL/ImageFont.py b/PIL/ImageFont.py index 18d09b87170..34fe510bd4e 100644 --- a/PIL/ImageFont.py +++ b/PIL/ImageFont.py @@ -140,7 +140,8 @@ def getmetrics(self): return self.font.ascent, self.font.descent def getsize(self, text): - return self.font.getsize(text)[0] + size, offset = self.font.getsize(text) + return (size[0] + offset[0], size[1] + offset[1]) def getoffset(self, text): return self.font.getsize(text)[1] diff --git a/Tests/images/rectangle_surrounding_text.png b/Tests/images/rectangle_surrounding_text.png new file mode 100644 index 00000000000..2b75a5e9c7a Binary files /dev/null and b/Tests/images/rectangle_surrounding_text.png differ diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index 927c80beeec..2fa679404af 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -71,11 +71,25 @@ def test_render_equal(self): self.assert_image_equal(img_path, img_filelike) self._clean() + def test_textsize_equal(self): + im = Image.new(mode='RGB', size=(300, 100)) + draw = ImageDraw.Draw(im) + ttf = ImageFont.truetype(font_path, font_size) + + txt = "Hello World!" + size = draw.textsize(txt, ttf) + draw.text((10, 10), txt, font=ttf) + draw.rectangle((10, 10, 10 + size[0], 10 + size[1])) + + target = 'Tests/images/rectangle_surrounding_text.png' + target_img = Image.open(target) + self.assert_image_equal(im, target_img) + def test_render_multiline(self): im = Image.new(mode='RGB', size=(300, 100)) draw = ImageDraw.Draw(im) ttf = ImageFont.truetype(font_path, font_size) - line_spacing = draw.textsize('A', font=ttf)[1] + 8 + line_spacing = draw.textsize('A', font=ttf)[1] + 4 lines = ['hey you', 'you are awesome', 'this looks awkward'] y = 0 for line in lines: