diff --git a/Cargo.toml b/Cargo.toml index 99cd0c9..762f23b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,7 @@ reqwest = { version = "0.12", default-features = false, features = ["rustls-tls" figment = { version = "0.10", features = ["toml", "env"] } clap = { version = "4", features = ["derive", "env"] } resvg = "0.45" +fontdb = "0.23" # internal moments-entities = { path = "crates/moments-entities", version = "=0.1.0" } diff --git a/crates/moments-api/Cargo.toml b/crates/moments-api/Cargo.toml index 3812de7..5048dcd 100644 --- a/crates/moments-api/Cargo.toml +++ b/crates/moments-api/Cargo.toml @@ -22,3 +22,4 @@ chrono.workspace = true clap.workspace = true reqwest.workspace = true resvg.workspace = true +fontdb.workspace = true diff --git a/crates/moments-api/src/main.rs b/crates/moments-api/src/main.rs index 88d6df1..0951a82 100644 --- a/crates/moments-api/src/main.rs +++ b/crates/moments-api/src/main.rs @@ -360,7 +360,12 @@ fn render_contributions_png( svg.push_str(""); // Rasterize at 1200x630 - let tree = resvg::usvg::Tree::from_str(&svg, &resvg::usvg::Options::default()) + let mut fontdb = fontdb::Database::new(); + fontdb.load_system_fonts(); + let mut opts = resvg::usvg::Options::default(); + opts.fontdb = std::sync::Arc::new(fontdb); + opts.font_family = "Noto Sans".to_owned(); + let tree = resvg::usvg::Tree::from_str(&svg, &opts) .map_err(|e| format!("svg parse: {e}"))?; let mut pixmap = diff --git a/ui/index.html b/ui/index.html index 73b1f26..7704df9 100644 --- a/ui/index.html +++ b/ui/index.html @@ -1,25 +1,62 @@ - - - - rob.tn - - - - - - - - - - - - - - - -
- - + + + + rob.tn + + + + + + + + + + + + + + + +
+ +