7 个版本
0.0.7 | 2024 年 5 月 19 日 |
---|---|
0.0.6 | 2024 年 5 月 16 日 |
#1378 in 文本处理
309 每月下载量
22KB
446 行
Kashida
如果你想要对齐阿拉伯文(或叙利亚文,或任何其他连接的书写系统)文本,你最终需要在字母之间插入卡西达(Unicode 字符 U+640,或 ـ)。这个小型 crate 可以为你提供一些看起来不错的候选方案。阿拉伯文的逻辑大致基于 微软的讨论。叙利亚文基于 此文档。
库的主要入口点是 find_kashidas
。你给它一个字符串,它将返回一个按优先级排序的卡西达位置候选列表,按字节索引。与 String::insert
或提供的便捷函数 place_kashidas
完美兼容。它不对字符串是否真正是你说的是的脚本进行验证。它对带元音的文本效果很好。
它是 no_std
。
Script
枚举有 Arabic
、Syriac 和
Unknown
。阿拉伯文和叙利亚文有自定义规则和优先级,但如果你使用 Unknown
变体,你会得到一套通用的规则,理论上应该适用于其他脚本。如果你能阅读并贡献这些其他脚本,将非常欢迎。
我尝试添加了一些 C FFI 函数,在 Rust Discord 的帮助下。然而,我对 C 的了解不足以知道如何使用它们。如果你能尝试它们并告诉我如何改进它们,将非常 helpful。
依赖项
~5.5MB
~85K SLoC