29个版本
0.3.15 | 2024年1月17日 |
---|---|
0.3.14 | 2023年12月6日 |
0.3.13 | 2023年3月20日 |
0.3.8 | 2022年4月26日 |
0.2.0 | 2015年7月23日 |
#14 in 文本处理
7,725,372 每月下载量
用于 27,732 个crates(26个直接使用)
240KB
4K SLoC
unicode-bidi
本crate实现了用于显示混合从右到左和从左到右文本的Unicode双向算法。它使用安全的Rust编写,与当前稳定版本兼容。
lib.rs
:
本crate实现了用于显示混合从右到左和从左到右文本的Unicode双向算法。它使用安全的Rust编写,与当前稳定版本兼容。
示例
use unicode_bidi::BidiInfo;
// This example text is defined using `concat!` because some browsers
// and text editors have trouble displaying bidi strings.
let text = concat![
"א",
"ב",
"ג",
"a",
"b",
"c",
];
// Resolve embedding levels within the text. Pass `None` to detect the
// paragraph level automatically.
let bidi_info = BidiInfo::new(&text, None);
// This paragraph has embedding level 1 because its first strong character is RTL.
assert_eq!(bidi_info.paragraphs.len(), 1);
let para = &bidi_info.paragraphs[0];
assert_eq!(para.level.number(), 1);
assert_eq!(para.level.is_rtl(), true);
// Re-ordering is done after wrapping each paragraph into a sequence of
// lines. For this example, I'll just use a single line that spans the
// entire paragraph.
let line = para.range.clone();
let display = bidi_info.reorder_line(para, line);
assert_eq!(display, concat![
"a",
"b",
"c",
"ג",
"ב",
"א",
]);
特性
std
:默认启用,但可以禁用以使unicode_bidi
与#![no_std]
+alloc
兼容。hardcoded-data
:默认启用。包括硬编码的Unicode双向数据以及更便捷的API。serde
:为相关类型添加了serde::Serialize
和serde::Deserialize
实现。
依赖关系
~0–570KB