| Crates.io | fontmesh |
| lib.rs | fontmesh |
| version | 0.3.4 |
| created_at | 2025-10-24 22:21:18.908306+00 |
| updated_at | 2026-01-06 11:46:09.710907+00 |
| description | Pure Rust library for converting TrueType font glyphs to 2D/3D triangle meshes |
| homepage | |
| repository | https://github.com/PoHsuanLai/fontmesh |
| max_upload_size | |
| id | 1899410 |
| size | 1,422,896 |
Library for converting TrueType font glyphs to 2D and 3D triangle meshes. A faster, pure Rust alternative to ttf2mesh.

use fontmesh::{Face, char_to_mesh_2d, char_to_mesh_3d};
let font_data = include_bytes!("font.ttf");
let face = Face::parse(font_data, 0)?;
// 2D mesh with 20 subdivisions per curve
let mesh_2d = char_to_mesh_2d(&face, 'A', 20)?;
// 3D mesh with depth 5.0 and 50 subdivisions
let mesh_3d = char_to_mesh_3d(&face, 'A', 5.0, 50)?;
use std::collections::HashMap;
use std::sync::Arc;
// Cache just the font data
let mut cache: HashMap<String, Arc<Vec<u8>>> = HashMap::new();
cache.insert("myfont".into(), Arc::new(font_data.to_vec()));
// Parse Face when needed (cheap!)
let data = cache.get("myfont").unwrap();
let face = Face::parse(data, 0)?;
let mesh = char_to_mesh_3d(&face, 'A', 5.0, 20)?;
cargo run --example basic
cargo run --example export_obj
cargo run --example serde --features serde
fontmesh is 2-3x faster than comparable libraries.
Run benchmarks: cargo bench
MIT