3个版本
0.3.2 | 2023年4月20日 |
---|---|
0.3.1 | 2023年4月11日 |
0.3.0 | 2023年4月8日 |
#425 in 图形API
105KB
2.5K SLoC
VDTFont
一个将字形转换为三角剖分的新型库,可用于在游戏和应用界面中渲染文本。
use vdtfont::{*, delaunay::*};
// Create a font
let font_data = include_bytes!("/usr/share/fonts/truetype/open-sans/OpenSans-Regular.ttf");
let mut font = Font::from_vec(font_data.to_vec())?;
// Obtain a glyph
let glyph = font.glyph('a');
// Outline the glyph
let outlined_glyph = font.outline_glyph(glyph);
// Triangulate th glyph
let triangulated_glyph = font.triangulate_glyph(outlined_glyph)?;
// Use the resulting triangulation
triangulated_glyph
.triangles()
.handle_iter::<DelaunayTriangleHandle>(triangulated_glyph.points())
.for_each(|triangle_handle| {
// ...
})
概述
VDTFont使用OpenCL构建Voronoi图并使用GPU对字形进行三角剖分。
三角剖分算法的完整描述在以下论文中:"Using Graphics Hardware for Computing Two-dimensional Delaunay Triangulation"
有什么新功能?
原来的font_rasterizer不具有竞争力,因此决定几乎完全重写它。
新的库VDTFont不使用传统的光栅化方法,而是使用GPU对字形进行三角剖分。
依赖关系
在Debian 11上
- ocl-icd-libopencl1
- opencl-headers
- 为您的GPU提供OpenCL驱动程序(例如,Intel GPU的intel-opencl-icd)
用法
在您的Rust项目目录中运行以下Cargo命令
$ cargo add vdtfont
或添加以下行到您的Cargo.toml文件中
vdtfont = "0.3.2"
构建
在项目目录中运行以下Cargo命令
$ cargo build --release
示例
运行以下命令
# build it
$ cargo build --release --example simple
# run it
$ ./target/release/examples/simple
Enter any symbol (CTRL + C to exit):
r
The image of the symbol was saved in r.png
路线图
- 实现基本字形三角剖分功能
- 修复插入边算法
- 添加C FFI
- 添加修复字形自相交轮廓的功能
依赖关系
~18MB
~147K SLoC