fontmesh 0.2.0

Pure Rust library for converting TrueType font glyphs to 2D/3D triangle meshes
Documentation
fontmesh-0.2.0 has been yanked.

fontmesh

A fast Rust library for converting TrueType font glyphs to 2D and 3D triangle meshes.

Quick Start

use fontmesh::{Font, Quality};

let font_data = include_bytes!("font.ttf");
let font = Font::from_bytes(font_data)?;

// Generate a 2D mesh
let mesh_2d = font.glyph_to_mesh_2d('A', Quality::Normal)?;

// Generate a 3D mesh with depth
let mesh_3d = font.glyph_to_mesh_3d('A', Quality::High, 5.0)?;

Performance

Examples

# Basic usage
cargo run --example basic

# Efficient buffer reuse for batch processing
cargo run --example buffer_reuse

# Export glyphs to OBJ format
cargo run --example export_obj

Quality Levels

  • Quality::Low - 10 subdivisions (fastest)
  • Quality::Normal - 20 subdivisions (balanced)
  • Quality::High - 50 subdivisions (smoothest)
  • Quality::Custom(n) - Custom subdivision count

Buffer Reuse

For processing multiple glyphs, reuse buffers to avoid allocations:

let mut mesh = Mesh2D::new();

for c in "Hello".chars() {
    font.glyph_to_mesh_2d_reuse(c, Quality::Normal, &mut mesh)?;
    // Use mesh...
}

How It Works

  1. Parse font with ttf-parser
  2. Extract glyph outline (Bezier curves)
  3. Linearize curves using adaptive subdivision
  4. Triangulate with lyon_tessellation
  5. Optional: Extrude to 3D with smooth normals

Dependencies

  • ttf-parser - Font parsing (pure Rust, no_std)
  • lyon_tessellation - Robust triangulation
  • glam - Vector math

License

MIT