bevy_fontmesh

Crates.iobevy_fontmesh
lib.rsbevy_fontmesh
version0.1.4
created_at2025-12-11 23:40:59.371799+00
updated_at2026-01-06 11:56:54.912274+00
descriptionSimple and focused Bevy plugin for generating 3D text meshes from fonts
homepagehttps://github.com/PoHsuanLai/bevy_fontmesh
repositoryhttps://github.com/PoHsuanLai/bevy_fontmesh
max_upload_size
id1980755
size171,989
Po-Hsuan Lai (PoHsuanLai)

documentation

https://docs.rs/bevy_fontmesh

README

bevy_fontmesh

CI Crates.io Documentation License: MIT

A simple and focused Bevy plugin for generating 3D text meshes from fonts. Powered by fontmesh.

What it does

Turns TrueType fonts into 3D meshes. You can control the extrusion depth, anchor points, and subdivision quality. Also supports per-character entities if you want to style or animate individual glyphs.

The plugin just generates the meshes - Bevy handles everything else (materials, lighting, rendering).

Quick Start

[dependencies]
bevy = "0.17"
bevy_fontmesh = "0.1.4"
use bevy::prelude::*;
use bevy_fontmesh::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(FontMeshPlugin)
        .add_systems(Startup, setup)
        .run();
}

fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
    mut materials: ResMut<Assets<StandardMaterial>>,
) {
    commands.spawn(TextMeshBundle {
        text_mesh: TextMesh {
            text: "Hello, World!".to_string(),
            font: asset_server.load("fonts/font.ttf"),
            style: TextMeshStyle {
                depth: 0.5,
                anchor: TextAnchor::Center,
                ..default()
            },
        },
        material: MeshMaterial3d(materials.add(StandardMaterial::default())),
        ..default()
    });
}

For detailed API documentation and more examples, see docs.rs/bevy_fontmesh.

Examples

cargo run --example basic                # Simple 3D text
cargo run --example multiline             # Multiline with anchoring
cargo run --example justification         # Text alignment
cargo run --example anchors               # All anchor points
cargo run --example per_glyph             # Per-character styling
cargo run --release --example stress_test # Performance test

Why another text plugin?

I wanted something simple that just generates meshes and lets Bevy do the rest. No fancy features, no complex API - just font → mesh.

Supported Formats

  • TrueType (.ttf) - fully supported
  • OpenType (.otf) with TrueType outlines - supported
  • OpenType with CFF/PostScript outlines - not supported (ttf-parser limitation)

Bevy Version Compatibility

bevy_fontmesh Bevy
0.1.4 0.17

License

MIT License - see LICENSE for details. <<<<<<< HEAD

Commit count: 12

cargo fmt