graphitepdf-font 0.2.0

Font primitives for GraphitePDF.
Documentation

Overview

graphitepdf-font models font families, variants, sources, standard fonts, emoji sources, and font loading for the GraphitePDF workspace.


Scope

graphitepdf-font contains:

  • FontDescriptor, FontStyle, and FontWeight
  • FontSource for local, remote, data-URI, and standard-font inputs
  • registration types such as FontRegistration and FontFamilyRegistration
  • FontStore for lookup, loading, emoji URL resolution, and hyphenation callbacks

Installation

cargo add graphitepdf-font

API Summary

Category Items
Font identity FontDescriptor, FontStyle, FontWeight, StandardFont
Font sources FontSource
Registration FontRegistration, FontVariantRegistration, FontFamilyRegistration
Runtime store FontStore, LoadedFont, RegisteredFont
Emoji and fallback EmojiSource, EmojiFormat, HyphenationCallback

Example

use graphitepdf_font::{FontDescriptor, FontRegistration, FontSource, FontStore, StandardFont};

#[tokio::main]
async fn main() -> graphitepdf_font::Result<()> {
    let mut store = FontStore::new();
    store.register_font(FontRegistration::new(
        "Helvetica",
        FontSource::standard(StandardFont::Helvetica),
    ))?;

    let descriptor = FontDescriptor::new("Helvetica");
    let _loaded = store.load(&descriptor).await?;

    Ok(())
}

Design Principles

  • keep font identity and loading separate from text layout policy
  • support multiple source types without hiding fallibility
  • expose standard-font behavior as first-class data
  • make fallback and emoji integration explicit rather than magical

Role In GraphitePDF

This crate is a shared service used by textkit, layout, render, style, and kit. It is the workspace's central place for describing and resolving fonts.


License

MIT