#arabic #unicode-characters #text #justification

kashida

将卡西达/塔图埃尔插入到阿拉伯文中,例如用于对齐目的。

7 个版本

0.0.7 2024 年 5 月 19 日
0.0.6 2024 年 5 月 16 日

#1378 in 文本处理

Download history 106/week @ 2024-05-03 354/week @ 2024-05-10 207/week @ 2024-05-17 9/week @ 2024-05-24

309 每月下载量

MIT 许可证

22KB
446

Crates.io Version docs.rs

Kashida

如果你想要对齐阿拉伯文(或叙利亚文,或任何其他连接的书写系统)文本,你最终需要在字母之间插入卡西达(Unicode 字符 U+640,或 ـ)。这个小型 crate 可以为你提供一些看起来不错的候选方案。阿拉伯文的逻辑大致基于 微软的讨论。叙利亚文基于 此文档

库的主要入口点是 find_kashidas。你给它一个字符串,它将返回一个按优先级排序的卡西达位置候选列表,按字节索引。与 String::insert 或提供的便捷函数 place_kashidas 完美兼容。它不对字符串是否真正是你说的是的脚本进行验证。它对带元音的文本效果很好。

它是 no_std

Script 枚举有 ArabicSyriacUnknown。阿拉伯文和叙利亚文有自定义规则和优先级,但如果你使用 Unknown 变体,你会得到一套通用的规则,理论上应该适用于其他脚本。如果你能阅读并贡献这些其他脚本,将非常欢迎。

我尝试添加了一些 C FFI 函数,在 Rust Discord 的帮助下。然而,我对 C 的了解不足以知道如何使用它们。如果你能尝试它们并告诉我如何改进它们,将非常 helpful。

依赖项

~5.5MB
~85K SLoC