#arabic #persian #turkish #no-std #line-string #default-config #reshape

不使用 std ar-reshaper

一个不使用 std 的 crate,用于重建阿拉伯语、土耳其语和波斯语句子,以便用于不支持阿拉伯语脚本的应用程序。

14 个版本 (5 个稳定版本)

1.5.0 2024年1月20日
1.3.1 2023年10月31日
1.0.0 2023年8月23日
0.3.4 2023年6月19日
0.2.4 2023年6月14日

算法 中排名第 280

Download history 9/week @ 2024-05-20 5/week @ 2024-06-03 3/week @ 2024-06-10 8/week @ 2024-07-01 42/week @ 2024-07-15 203/week @ 2024-07-22

每月下载量 253
ghe2d 中使用

MIT 许可证

105KB
2.5K SLoC

阿拉伯 Reshaper Rust

Latest version Documentation Build Status unsafe forbidden MIT

一个 不使用 std 的 crate,用于重建阿拉伯语、土耳其语和波斯语句子,以便用于不支持阿拉伯语脚本的应用程序。

用法

重塑单行字符串

use ar_reshaper::{ArabicReshaper, reshape_line};

let reshaper = ArabicReshaper::default();

// You can reshape just a single string using
println!("{}", reshaper.reshape("سلام دنیا"));
// or using `reshape_line` method if you dont want to construct the [ArabicReshaper]
// and you just want to reshape a few strings with default config
println!("{}", reshape_line("سلام دنیا"));
// Both will reconstruct the string and print `ﺳﻼﻡ ﺩﻧﯿﺎ`

重塑字符串切片

use ar_reshaper::ArabicReshaper;

let reshaper = ArabicReshaper::default();

let lines = [
    "سلام",
    "سلام، خوبی؟",
];

println!("{:#?}", reshaper.reshape_lines(lines));
// or you can just use reshape method in a loop... the choice is yours.

重塑迭代器上的字符串

use ar_reshaper::prelude::*;

for line in ["یک", "دو"].iter().reshape_default() {
    println!("{line}");
}

您可以在 示例测试 目录中找到更多示例。

功能

  • serde:如果启用此功能,则可以使用 serde 序列化和反序列化 ReshaperConfig
  • ttf-parser:如果启用此功能,则 ReshaperConfig 方法将具有一个名为 from_font 的额外方法,可用于仅在输入字体中存在的情况下启用连字符。

注意

  • 请注意,此 crate 需要分配器才能工作,因为我们内部依赖于 alloc

致谢

本项目基于出色的 python-arabic-reshaper

依赖关系

~0–360KB