diff --git a/src/PIL/ImageFont.py b/src/PIL/ImageFont.py index b7d40208c..05828a72f 100644 --- a/src/PIL/ImageFont.py +++ b/src/PIL/ImageFont.py @@ -562,9 +562,17 @@ class FreeTypeFont: _string_length_check(text) if start is None: start = (0, 0) - im, size, offset = self.font.render( + im = None + + def fill(mode, size): + nonlocal im + + im = Image.core.fill(mode, size) + return im + + size, offset = self.font.render( text, - Image.core.fill, + fill, mode, direction, features, diff --git a/src/_imagingft.c b/src/_imagingft.c index fd3255244..62819a569 100644 --- a/src/_imagingft.c +++ b/src/_imagingft.c @@ -882,7 +882,7 @@ font_render(FontObject *self, PyObject *args) { if (max_image_pixels != Py_None) { if ((long long)(width > 1 ? width : 1) * (height > 1 ? height : 1) > PyLong_AsLongLong(max_image_pixels) * 2) { PyMem_Del(glyph_info); - return Py_BuildValue("O(ii)(ii)", Py_None, width, height, 0, 0); + return Py_BuildValue("(ii)(ii)", width, height, 0, 0); } } @@ -898,7 +898,7 @@ font_render(FontObject *self, PyObject *args) { y_offset -= stroke_width; if (count == 0 || width == 0 || height == 0) { PyMem_Del(glyph_info); - return Py_BuildValue("O(ii)(ii)", image, width, height, x_offset, y_offset); + return Py_BuildValue("(ii)(ii)", width, height, x_offset, y_offset); } if (stroke_width) { @@ -1113,9 +1113,10 @@ font_render(FontObject *self, PyObject *args) { if (bitmap_converted_ready) { FT_Bitmap_Done(library, &bitmap_converted); } + Py_DECREF(image); FT_Stroker_Done(stroker); PyMem_Del(glyph_info); - return Py_BuildValue("O(ii)(ii)", image, width, height, x_offset, y_offset); + return Py_BuildValue("(ii)(ii)", width, height, x_offset, y_offset); glyph_error: if (im->destroy) {