1 个不稳定版本
0.1.0 | 2024年5月18日 |
---|
#98 在 渲染
2MB
2K 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();