1 个不稳定版本

0.1.0 2024年5月18日

#98渲染

ISC 许可证

2MB
2K SLoC

C 1.5K SLoC // 0.1% comments Rust 364 SLoC // 0.0% comments Visual Studio Project 284 SLoC Visual Studio Solution 41 SLoC

schrift-rs

libschrift 是一个用C实现的轻量级TrueType渲染库,此crate将libschrift库封装到安全的Rust中。结果是具有无运行时依赖的字体加载和字形渲染crate,除了C和Rust标准库外,无需其他依赖。

以下示例代码将单个字形渲染到PGM文件中

use schrift_rs::*;
let font = Font::load_from_file(
    concat!(
        env!("CARGO_MANIFEST_DIR"),
        "/libschrift/resources/FiraGO-Regular.ttf")).unwrap();
let sch = Schrift::build(font)
    .with_scale(10.0)
    .flag_y_downwards()
    .build();
let aglyph = sch
    .glyph_lookup('a')
    .expect("couldn't look up lowercase 'a'");

let mut pxdata = vec![0u8; 256];

sch.render(aglyph, pxdata.as_mut_slice(), 16, 16).expect("couldn't render lowercase 'a'");

let mut pgm = String::new();
pgm.push_str("P2\n16 16\n255\n");
for y in 0..16 {
    for x in 0..16 {
        pgm.push_str(format!(" {}", pxdata[x + (y * 16)]).as_str());
    }
    pgm.push_str("\n");
}
std::fs::write(concat!(env!("OUT_DIR"), "render_test.pgm"), pgm).unwrap();

无运行时依赖