#true-type #font #sdf #opentype #distance-field

无 std 程序+库 fontsdf

fontdue 扩展,可直接生成 sdf:s

13 个版本

0.5.1 2023 年 4 月 21 日
0.5.0 2022 年 10 月 4 日
0.4.7 2022 年 10 月 4 日
0.4.6 2022 年 7 月 10 日

249游戏

Download history 11/week @ 2024-03-08 4/week @ 2024-03-15 47/week @ 2024-03-29 16/week @ 2024-04-05

每月下载量 100
4 个包中使用(通过 srs2dge-text

MIT 许可

155KB
558

fontsdf

dependency status build status crates.io docs.rs

签名距离场(SDF)纹理可以更灵活地渲染文本或其他矢量艺术,同时使用更少的视频内存(对于纹理)并提高质量[1]。

no_std 库直接渲染 SDF:s,而不是通过降低高分辨率光栅的分辨率。

[1] 例如

  • 可以使用单个 64px 的符号渲染 14px 和 200px 的符号。
  • 添加发光、轮廓等功能很简单。

比较

注意:对于简单的符号,请使用 fontdue。它要快得多。

任务 SDF 常规
高分辨率符号
中等分辨率符号
低分辨率符号
拉伸或压缩符号
阴影边框和效果
GUI
3D 游戏世界
  • ✅ 表示擅长

使用 image 的示例用法

let font = fontsdf::Font::from_bytes(..).unwrap();

let (metrics, sdf) = font.rasterize('x', 64.0, true);
image::GrayImage::from_raw(metrics.width as _, metrics.height as _, sdf)
	.unwrap()
	.save("sdf_x.png")
	.unwrap();

示例输出

正常

SDF

示例结果

正常

  • 128x156
  • 80px 字体大小

SDF

  • 128x128
  • 48px (+半径) 字体大小(32px 输入大小对于任何输出大小都足够了)
  • 'free' 阴影

待办事项

依赖项

~6MB
~140K SLoC