#true-type #mesh #3d #tessellation #api-bindings

ttf2mesh

Rust API for ttf2mesh - 一个跨平台的库,可以将 TrueType 字体 (ttf) 的字符转换为 2D 和 3D 空间中的网格对象

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 多媒体

Download history 12/week @ 2024-03-13 5/week @ 2024-03-20 11/week @ 2024-03-27 26/week @ 2024-04-03 81/week @ 2024-04-10 14/week @ 2024-04-17 7/week @ 2024-04-24 4/week @ 2024-05-22 61/week @ 2024-05-29 106/week @ 2024-06-05 90/week @ 2024-06-12 111/week @ 2024-06-19 50/week @ 2024-06-26

368 每月下载量
用于 bevy_text_mesh

MIT 许可证

555KB
12K SLoC

C 6K SLoC // 0.1% comments C++ 4.5K SLoC // 0.1% comments Rust 561 SLoC // 0.0% comments Visual Studio Project 511 SLoC Python 92 SLoC // 0.0% comments Prolog 61 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