18个版本

0.6.0 2022年12月13日
0.5.0 2022年8月20日
0.4.3 2022年8月20日
0.4.2 2022年2月10日
0.2.0 2020年11月23日

#658文本处理

Download history 24/week @ 2024-03-11 22/week @ 2024-03-18 44/week @ 2024-03-25 52/week @ 2024-04-01 22/week @ 2024-04-08 19/week @ 2024-04-15 30/week @ 2024-04-22 23/week @ 2024-04-29 29/week @ 2024-05-06 23/week @ 2024-05-13 22/week @ 2024-05-20 27/week @ 2024-05-27 20/week @ 2024-06-03 24/week @ 2024-06-10 31/week @ 2024-06-17 26/week @ 2024-06-24

102 每月下载次数
8 个crates中使用 (2直接)

Apache-2.0

210KB
4K SLoC

KAS Text

kas Docs

一个适用于KAS和其他GUI工具的纯Rust富文本处理库。

它做什么(或可能在未来做什么)

  • 字体发现(非常有限;忽略系统配置)
  • 缺失符号的字体回退
  • 文本布局:输出一系列定位的符号
  • 支持双向文本
  • 通过 rustybuzzharfbuzz 进行文本形状(可选)
  • 正确处理组合的重音符号
  • 支持位置导航/查找
  • 连字符导航
  • 视觉顺序BIDI文本导航
  • 表情符号
  • 富文本:为子范围选择字体(风格/权重/家族)
  • 文本注释:突出显示范围,下划线
  • 光栅符号(通过 ab_glyphfontdue
  • 较快:足够用于快速GUI;可以进行进一步优化

它不做什么

  • 绘制:光栅化符号产生一系列精灵。将这些精灵缓存到符号图集中并在纹理上渲染超出了这个项目的范围,因为这依赖于使用的图形库。
  • 编辑:将输入操作(例如从winit WindowEvent)映射到文本编辑操作超出了这个项目的范围。API确实涵盖了替换文本范围和查找坐标最近的符号索引。
  • 富文本:没有富文本的包装格式。包括了一个 FormattableText 特性和一个(有限的)Markdown处理器。
  • 全文布局:不支持自定义段落间距、行间距、嵌入图像或水平线。

更多信息,请参阅初始的 设计文档问题 #1

示例

由于 kas-text 仅关注文本布局,因此这里的所有示例均由KAS GUI提供。请参阅 示例目录

BIDI layout and editing Markdown

替代方案

用于排版和渲染文本的纯Rust替代方案

  • Swash:字体内省、形状、字符和脚本分析、渲染
  • fontdue:光栅化和简单布局
  • glyph_brush:渲染和简单布局

非纯Rust替代方案包括font-kitpiet等。

MSRV

最低支持的Rust版本是1.65.0。

贡献

欢迎贡献。对于不太直接的贡献,建议在创建pull-request之前先在issue中讨论。

目前测试是通过KAS示例以非常随意的的方式进行。这通过在开发过程中将KAS提交与kas-text提交哈希绑定来实现,允许测试编辑和显示。一个全面的测试框架必须考虑大量的案例,仅测试框架本身的工作量就比构建这个库要多得多,所以目前用户测试和错误报告将不得不满足需求。

COPYRIGHT文件中包含了一份声明对项目拥有版权的贡献者列表。此列表可能不完整;新贡献者可以选择将自己添加到此列表中。

KAS库是在Apache License,Version 2.0的条款下发布的。您可以从此LICENSE文件或以下网页获得此许可证副本:https://www.apache.org/licenses/LICENSE-2.0

依赖项

~1.7-4MB
~77K SLoC