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

Download history 19399/week @ 2024-05-02 21160/week @ 2024-05-09 19845/week @ 2024-05-16 18392/week @ 2024-05-23 18267/week @ 2024-05-30 18652/week @ 2024-06-06 20183/week @ 2024-06-13 20690/week @ 2024-06-20 18184/week @ 2024-06-27 15590/week @ 2024-07-04 15098/week @ 2024-07-11 17439/week @ 2024-07-18 17387/week @ 2024-07-25 18147/week @ 2024-08-01 21374/week @ 2024-08-08 17192/week @ 2024-08-15

每月 76,978 次下载
用于 102 个crate (直接使用 42 个)

MIT/Apache

255KB
5K SLoC

font-kit

Build Status crates.io Documentation

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-freetypesource-fontconfig。如果您想将它们设置为默认值,则分别使用Cargo功能loader-freetype-defaultsource-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