fontsource_downloader 0.3.1

A library to download (and cache) fonts with Fontsource REST API
Documentation

fontsource-downloader

Python Rust codecov docs.rs Crates.io PyPI

A library to download (and cache) fonts with fontsource REST API.

Library Features

  • Download a batch of fonts per family (based on the given query).
  • Asynchronous downloads with true parallelism.
  • Generate CSS @font-face rules. Both CDN URLs and self-hosting (relative path) URLs are supported. Self-hosted font files can be optionally copied from cache to a given destination directory.
  • Caching enabled (with option to customize cache root dir) for both metadata and font files.
  • Minimal debug logs (when enabled).

Rust consumers get to choose their desired TLS backend. Only the required features of the reqwest crate are enabled.

Examples

Python

import asyncio # the only supported async runtime in python
from pathlib import Path
# configure logging before importing this library
from fontsource_downloader import (
  FontQuery, FontSourceClient, Weight
)

client = FontSourceClient()
query = FontQuery(
    family="Roboto",
    weights=[Weight(400)],
)
font_files: list[Path] = await client.download_font(query)
# do what you want with the cached font files ...

Rust

use std::path::PathBuf;
use fontsource_downloader::{
    FontQuery, FontSourceClient, QueryBuilder, Weight,
};

let client = FontSourceClient::new().unwrap();
let query: FontQuery = QueryBuilder::new("Roboto")
    .with_weight(Weight::from(400))
    .build();
let font_files: Vec<PathBuf> = client
    .download_font(&query)
    .await
    .unwrap();
// do what you want with the cached font files ...