use std::path::Path;
pub fn load_fonts_from_dir() -> Vec<printwell::CustomFont> {
let fonts_dir = Path::new("fonts");
let mut fonts = Vec::new();
if !fonts_dir.exists() {
return fonts;
}
let Ok(entries) = std::fs::read_dir(fonts_dir) else {
return fonts;
};
for entry in entries.flatten() {
let path = entry.path();
if let Some(ext) = path.extension() {
let ext = ext.to_string_lossy().to_lowercase();
if (ext == "ttf" || ext == "otf" || ext == "woff" || ext == "woff2")
&& let Ok(data) = std::fs::read(&path)
{
let family = path.file_stem().map_or_else(
|| "CustomFont".to_string(),
|s| s.to_string_lossy().to_string(),
);
eprintln!(
"[printwell] Loaded font '{family}' from {} ({} bytes)",
path.display(),
data.len()
);
fonts.push(printwell::CustomFont::new(family, data));
}
}
}
fonts
}