RAP_DocLayout_DetectionD / scripts /_render_utils.py
RISHIVEL's picture
space deploy: fix zerogpu pickling
087643a
Raw
History Blame Contribute Delete
1.2 kB
# Shared by prepare_dataset.py's label check and mine_failures.py's
# failure renders. PIL's bitmap default font (~10px) turns into an
# illegible smear once resized for a notebook or memo screenshot - which
# is the only place either render gets looked at.
from __future__ import annotations
def load_label_font(size: int):
"""Finds a real scalable font. matplotlib ships its own DejaVu copy
and is already a pinned dependency, so that's guaranteed to exist -
a bare "DejaVuSans-Bold.ttf" only works if the OS's font search
happens to resolve it, which isn't something to bet a Kaggle run on."""
from PIL import ImageFont
candidates = []
try:
import matplotlib
candidates.append(f"{matplotlib.get_data_path()}/fonts/ttf/DejaVuSans-Bold.ttf")
except Exception:
pass
candidates += [
"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", # Debian/Ubuntu, Kaggle
"DejaVuSans-Bold.ttf", # works if OS font search resolves it (e.g. Windows)
]
for path in candidates:
try:
return ImageFont.truetype(path, size)
except OSError:
continue
return ImageFont.load_default()