3 个版本
0.1.2 | 2023 年 2 月 13 日 |
---|---|
0.1.1 | 2023 年 2 月 13 日 |
0.1.0 | 2023 年 2 月 12 日 |
#162 in 渲染
66KB
1K SLoC
rust-fribidi
Rust 对 fribidi 库的绑定(Unicode 双向和阿拉伯文连接/形状算法)。
示例
let text = U32String::from("چرمهين");
let gt = U32String::from("ﻦﻴﻬﻣﺮﭼ");
let gt_maximum_level = 2;
let gt_positions_logic_to_visual = vec![5, 4, 3, 2, 1, 0];
let gt_positions_visual_to_logic = vec![5, 4, 3, 2, 1, 0];
let gt_embedding_levels = vec![LevelType(1); 6];
let mut positions_logic_to_visual :Vec<i32> = vec![1; text.len()];
let mut positions_visual_to_logic :Vec<i32> = vec![1; text.len()];
let mut embedding_levels: Vec<LevelType> = vec![LevelType(1); text.len()];
let (res, maximum_level) = Fribidi::logic_to_visual(
&text,
ParagraphType::OtherNeutral, // let fribidi detect the type
Some(&mut positions_logic_to_visual),
Some(&mut positions_visual_to_logic),
Some(&mut embedding_levels)
).unwrap();
assert_eq!((res, maximum_level), (gt, gt_maximum_level));
assert_eq!(positions_logic_to_visual, gt_positions_logic_to_visual);
assert_eq!(positions_visual_to_logic, gt_positions_visual_to_logic);
assert_eq!(embedding_levels, gt_embedding_levels);
注意
- fribidi 库受 LGPL 许可证。
- 此库受 MIT 许可证。
依赖项
~0.5–2.3MB
~41K SLoC