rust-fribidi

Rust binding for fribidi library (Unicode bidirectional and Arabic joining/shaping algorithms).

example

```rust let text = U32String::from("چرمهين");

let gt = U32String::from("ﻦﻴﻬﻣﺮﭼ"); let gtmaximumlevel = 2; let gtpositionslogictovisual = vec![5, 4, 3, 2, 1, 0]; let gtpositionsvisualtologic = vec![5, 4, 3, 2, 1, 0]; let gtembeddinglevels = vec![LevelType(1); 6];

let mut positionslogictovisual :Vec = vec![1; text.len()]; let mut positionsvisualtologic :Vec = vec![1; text.len()]; let mut embedding_levels: Vec = vec![LevelType(1); text.len()];

let (res, maximumlevel) = Fribidi::logictovisual( &text, ParagraphType::OtherNeutral, // let fribidi detect the type Some(&mut positionslogictovisual), Some(&mut positionsvisualtologic), Some(&mut embeddinglevels) ).unwrap();

asserteq!((res, maximumlevel), (gt, gtmaximumlevel)); asserteq!(positionslogictovisual, gtpositionslogictovisual); asserteq!(positionsvisualtologic, gtpositionsvisualtologic); asserteq!(embeddinglevels, gtembeddinglevels); ```

NOTE