Pillow/Tests/test_imagetext.py
2025-07-24 19:34:29 +10:00

42 lines
1.4 KiB
Python

from __future__ import annotations
import pytest
from PIL import ImageFont, ImageText
from .helper import skip_unless_feature
FONT_PATH = "Tests/fonts/FreeMono.ttf"
@pytest.fixture(
scope="module",
params=[
pytest.param(ImageFont.Layout.BASIC),
pytest.param(ImageFont.Layout.RAQM, marks=skip_unless_feature("raqm")),
],
)
def layout_engine(request: pytest.FixtureRequest) -> ImageFont.Layout:
return request.param
@pytest.fixture(scope="module")
def font(layout_engine: ImageFont.Layout) -> ImageFont.FreeTypeFont:
return ImageFont.truetype(FONT_PATH, 20, layout_engine=layout_engine)
def test_get_length(font: ImageFont.FreeTypeFont) -> None:
assert ImageText.ImageText("A", font).get_length() == 12
assert ImageText.ImageText("AB", font).get_length() == 24
assert ImageText.ImageText("M", font).get_length() == 12
assert ImageText.ImageText("y", font).get_length() == 12
assert ImageText.ImageText("a", font).get_length() == 12
def test_get_bbox(font: ImageFont.FreeTypeFont) -> None:
assert ImageText.ImageText("A", font).get_bbox() == (0, 4, 12, 16)
assert ImageText.ImageText("AB", font).get_bbox() == (0, 4, 24, 16)
assert ImageText.ImageText("M", font).get_bbox() == (0, 4, 12, 16)
assert ImageText.ImageText("y", font).get_bbox() == (0, 7, 12, 20)
assert ImageText.ImageText("a", font).get_bbox() == (0, 7, 12, 16)