diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index c7a111b63c9..4a06cd90edb 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -66,6 +66,7 @@ def test_font_properties(font: ImageFont.FreeTypeFont) -> None: font_copy = font.font_variant() assert font_copy.path == FONT_PATH assert font_copy.size == FONT_SIZE + assert font_copy.layout_engine == font.layout_engine font_copy = font.font_variant(size=FONT_SIZE + 1) assert font_copy.size == FONT_SIZE + 1 @@ -75,6 +76,20 @@ def test_font_properties(font: ImageFont.FreeTypeFont) -> None: assert font_copy.path == second_font_path +@pytest.mark.parametrize( + "variant_layout_engine", + ( + ImageFont.Layout.BASIC, + pytest.param(ImageFont.Layout.RAQM, marks=skip_unless_feature("raqm")), + ), +) +def test_font_variant_layout_engine( + font: ImageFont.FreeTypeFont, variant_layout_engine: ImageFont.Layout +) -> None: + font_copy = font.font_variant(layout_engine=variant_layout_engine) + assert font_copy.layout_engine == variant_layout_engine + + def _render( font: StrOrBytesPath | BinaryIO, layout_engine: ImageFont.Layout ) -> Image.Image: diff --git a/src/PIL/ImageFont.py b/src/PIL/ImageFont.py index d066759660c..611a8c4f2d3 100644 --- a/src/PIL/ImageFont.py +++ b/src/PIL/ImageFont.py @@ -695,7 +695,9 @@ def font_variant( size=self.size if size is None else size, index=self.index if index is None else index, encoding=self.encoding if encoding is None else encoding, - layout_engine=layout_engine or self.layout_engine, + layout_engine=( + layout_engine if layout_engine is not None else self.layout_engine + ), ) def get_variation_names(self) -> list[bytes]: