15 releases
0.2.1 | Apr 11, 2023 |
---|---|
0.2.0 | Oct 24, 2021 |
0.1.2 | Oct 24, 2021 |
0.0.11 | Sep 28, 2021 |
0.0.5 | Jul 31, 2021 |
#69 in Multimedia
690 downloads per month
Used in bevy_text_mesh
555KB
12K
SLoC
ttf2mesh
A high-level Rust wrapper API for fetisov's ttf2mesh library for generating a 2d/3d mesh (vertices, indices and normals [only for 3D]) from TrueType (.ttf
) glyphs.
Installing
Prequisites:
apt-get install build-essential patch
Add to Cargo.toml
:
[dependencies]
ttf2mesh = "*" # change to latest version
Examples
See examples -folder and crate docs.
Simple usage:
use ttf2mesh::{Quality, TTFFile, Value};
let mut font = TTFFile::from_file("fonts/FiraMono-Medium.ttf").unwrap();
for char in "Hello_World".chars() {
let mut glyph = font.glyph_from_char(char).unwrap();
let mesh = glyph.to_2d_mesh(Quality::Medium).unwrap();
println!("Mesh data char {:?}", char);
println!(
"- vertices: [{}]",
mesh.iter_vertices()
.map(|v| {
let v = v.val();
format!("({:.3}, {:.2})", v.0, v.1)
})
.collect::<Vec<_>>()
.join(", ")
);
println!(
"- faces: [{}]",
mesh.iter_faces()
.map(|v| {
let v = v.val();
format!("({}, {}, {})", v.0, v.1, v.2)
})
.collect::<Vec<_>>()
.join(", ")
);
println!("");
}
Security
The API surface (mainly .ttf
loading) has been fuzzed with cargo-fuzz.
Development
Install prequisites (see above).
Clone repository:
git clone https://github.com/blaind/ttf2mesh-rs.git
Update submodules
git submodule update --init
Develop
License
Licensed under MIT license
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the software by you, shall be licensed as above, without any additional terms or conditions.
Dependencies
~0–2MB
~41K SLoC