printwell-cli 0.1.11

Command-line tool for HTML to PDF conversion
Documentation
//! Font loading utilities.

use std::path::Path;

/// Load all fonts from the ./fonts/ directory.
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)
            {
                // Use filename without extension as family name
                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
}