15 个版本
0.2.1 | 2023年4月11日 |
---|---|
0.2.0 | 2021年10月24日 |
0.1.2 | 2021年10月24日 |
0.0.11 | 2021年9月28日 |
0.0.5 | 2021年7月31日 |
#52 in 多媒体
368 每月下载量
用于 bevy_text_mesh
555KB
12K SLoC
ttf2mesh
为 fetisov 的 ttf2mesh 库提供高级 Rust 包装 API,用于从 TrueType (.ttf
) 字符生成 2D/3D 网格(顶点、索引和法线[仅适用于 3D])。
安装
先决条件
apt-get install build-essential patch
添加到 Cargo.toml
[dependencies]
ttf2mesh = "*" # change to latest version
示例
请参阅 示例 文件夹和 crate 文档。
简单用法
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!("");
}
安全
API 表面(主要是 .ttf
加载)已使用 cargo-fuzz 进行模糊测试。
开发
安装先决条件(见上文)。
克隆仓库
git clone https://github.com/blaind/ttf2mesh-rs.git
更新子模块
git submodule update --init
开发
许可证
许可协议为 MIT 许可证
贡献
除非您明确声明,否则您有意提交以包含在软件中的任何贡献,均应按照上述方式许可,不附加任何额外条款或条件。
依赖关系
~0–2MB
~40K SLoC