21 个版本 (重大更新)
0.14.2 | 2024 年 8 月 2 日 |
---|---|
0.14.1 | 2024 年 7 月 18 日 |
0.13.2 | 2024 年 5 月 21 日 |
0.13.0 | 2024 年 3 月 20 日 |
0.0.0 | 2018 年 7 月 24 日 |
#15 in 图形API
每月 76,978 次下载
用于 102 个crate (直接使用 42 个)
255KB
5K SLoC
font-kit
font-kit
提供了对各种系统字体库的通用接口,并提供查找系统字体、执行最近字体匹配和光栅化字形等服务。
概要
let font = SystemSource::new()
.select_by_postscript_name("ArialMT")
.unwrap()
.load()
.unwrap();
let glyph_id = font.glyph_for_char('A').unwrap();
let mut canvas = Canvas::new(&Size2D::new(32, 32), Format::A8);
font.rasterize_glyph(
&mut canvas,
glyph_id,
32.0,
&Point2D::new(0.0, 32.0),
HintingOptions::None,
RasterizationOptions::GrayscaleAa,
)
.unwrap();
后端
font-kit
将任务委托给系统库执行。它有两种类型后端:一种 源 和一种 加载器。源是平台字体数据库;它们允许通过名称或属性查找已安装的字体。加载器是字体加载库;它们允许从磁盘上的文件或内存中的字节加载字体文件(TTF、OTF 等)。源和加载器可以在运行时自由混合;例如,可以通过 DirectWrite 查找字体并通过 FreeType 渲染。
可用的加载器
-
Core Text (macOS):macOS 上的系统字体加载器。除非使用双值渲染,否则不执行提示。
-
DirectWrite (Windows):Windows 上用于文本渲染的新系统框架。执行垂直提示但不执行完整提示。
-
FreeType (跨平台):一个功能齐全的字体渲染框架。
可用的源
-
Core Text (macOS):macOS 上的系统字体数据库。
-
DirectWrite (Windows):查询 Windows 上系统字体数据库的新 API。
-
Fontconfig (跨平台):一个技术上是平台无关的,但在实践中是 Unix 特定的查询和匹配字体的 API。
-
文件系统 (跨平台):从磁盘上的路径读取字体的简单源。这是 Android 的默认设置。
-
内存(跨平台):一个从内存中固定字体集读取的源。
-
多(跨平台):允许一次性查询多个源的源。
在Windows和macOS上,FreeType加载器和Fontconfig源默认不构建。要构建它们,分别使用Cargo功能loader-freetype
和source-fontconfig
。如果您想将它们设置为默认值,则分别使用Cargo功能loader-freetype-default
和source-fontconfig-default
。请注意,source-fontconfig-default
在这两个平台上很少是您想要的!
如果您根本不需要在系统上定位字体——例如,如果您所有字体都存储在您的应用程序中——那么您可以省略默认的source
功能,并且不会包含任何代码。
功能
font-kit
能够执行以下操作
-
从文件或内存中加载字体。
-
确定磁盘上的文件或在内存中表示字体。
-
与原生字体API交互。
-
查询有关字体的各种元数据。
-
执行简单的字形到字符映射。(对于更复杂的用例,需要形状器;适当的形状超出了
font-kit
的范围。) -
从字形读取未提示或提示的矢量轮廓。
-
计算字形和字体度量。
-
查找字形进位和原点。
-
使用原生光栅化器光栅化字形,可选使用提示。(可以与轮廓API一起使用自定义光栅化器,例如Pathfinder。)
-
查找系统上的所有字体。
-
通过家族或PostScript名称搜索特定字体。
-
根据CSS Fonts Module Level 3规范执行字体匹配。
依赖关系
Ubuntu
sudoapt install pkg-config libfreetype6-dev libfontconfig1-dev
许可证
font-kit
根据与Rust相同的条款进行许可。
依赖关系
~0.7–13MB
~100K SLoC