diff --git a/Tests/test_font_leaks.py b/Tests/test_font_leaks.py index 015210b4d4c..0f5729c2369 100644 --- a/Tests/test_font_leaks.py +++ b/Tests/test_font_leaks.py @@ -5,7 +5,7 @@ class TestTTypeFontLeak(PillowLeakTestCase): # fails at iteration 3 in master - iterations = 10 + iterations = 40 mem_limit = 4096 # k def _test_font(self, font): @@ -13,7 +13,7 @@ def _test_font(self, font): draw = ImageDraw.ImageDraw(im) self._test_leak( lambda: draw.text( - (0, 0), "some text " * 1024, font=font, fill="black" # ~10k + (0, 0), "some text " * 256, font=font, fill="black" # ~2.5k ) ) @@ -25,7 +25,7 @@ def test_leak(self): class TestDefaultFontLeak(TestTTypeFontLeak): # fails at iteration 37 in master - iterations = 100 + iterations = 400 mem_limit = 1024 # k def test_leak(self): diff --git a/Tests/test_imagedraw.py b/Tests/test_imagedraw.py index cc8bd24383c..58a4f1c9693 100644 --- a/Tests/test_imagedraw.py +++ b/Tests/test_imagedraw.py @@ -1039,7 +1039,7 @@ def test_stroke_descender(): draw.text((10, 0), "y", "#f00", font, stroke_width=2, stroke_fill="#0f0") # Assert - assert_image_similar_tofile(im, "Tests/images/imagedraw_stroke_descender.png", 6.76) + assert_image_similar_tofile(im, "Tests/images/imagedraw_stroke_descender.png", 6.78) @skip_unless_feature("freetype2") diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index aa7ec6fa633..064b2fa6edd 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -471,7 +471,8 @@ def test_unicode_extended(self): d = ImageDraw.Draw(img) d.text((10, 10), text, font=ttf) - assert_image_similar_tofile(img, target, self.metrics["multiline"]) + # fails with 14.7 + assert_image_similar_tofile(img, target, 6.2) def _test_fake_loading_font(self, monkeypatch, path_to_fake, fontname): # Make a copy of FreeTypeFont so we can patch the original @@ -703,10 +704,10 @@ def test_variation_set_by_name(self): font.set_variation_by_name("Bold") font = ImageFont.truetype("Tests/fonts/AdobeVFPrototype.ttf", 36) - self._check_text(font, "Tests/images/variation_adobe.png", 11) + self._check_text(font, "Tests/images/variation_adobe.png", 11.2) for name in ["Bold", b"Bold"]: font.set_variation_by_name(name) - self._check_text(font, "Tests/images/variation_adobe_name.png", 11) + self._check_text(font, "Tests/images/variation_adobe_name.png", 11.3) font = ImageFont.truetype("Tests/fonts/TINY5x3GX.ttf", 36) self._check_text(font, "Tests/images/variation_tiny.png", 40) @@ -728,7 +729,7 @@ def test_variation_set_by_axes(self): font = ImageFont.truetype("Tests/fonts/AdobeVFPrototype.ttf", 36) font.set_variation_by_axes([500, 50]) - self._check_text(font, "Tests/images/variation_adobe_axes.png", 5.1) + self._check_text(font, "Tests/images/variation_adobe_axes.png", 5.8) font = ImageFont.truetype("Tests/fonts/TINY5x3GX.ttf", 36) font.set_variation_by_axes([100]) diff --git a/src/PIL/ImageFont.py b/src/PIL/ImageFont.py index 9a1ede80cde..25320d43d84 100644 --- a/src/PIL/ImageFont.py +++ b/src/PIL/ImageFont.py @@ -259,9 +259,10 @@ def getsize( :return: (width, height) """ + # vertical offset is added for historical reasons, see discussion in #4789 size, offset = self.font.getsize(text, False, direction, features, language) return ( - size[0] + stroke_width * 2 + offset[0], + size[0] + stroke_width * 2, size[1] + stroke_width * 2 + offset[1], )