7 releases
0.1.5 | Jul 25, 2023 |
---|---|
0.1.4 | Sep 29, 2022 |
0.1.2 | Jul 25, 2021 |
0.1.1 | Jan 30, 2021 |
0.0.1 | Dec 10, 2018 |
#20 in Internationalization (i18n)
1,290,036 downloads per month
Used in 890 crates
(13 directly)
79KB
159 lines
unicode-linebreak
Implementation of the Line Breaking Algorithm described in Unicode Standard Annex #14.
Given an input text, locates "line break opportunities", or positions appropriate for wrapping lines when displaying text.
Example
use unicode_linebreak::{linebreaks, BreakOpportunity::{Mandatory, Allowed}};
let text = "a b \nc";
assert!(linebreaks(text).eq([
(2, Allowed), // May break after first space
(5, Mandatory), // Must break after line feed
(6, Mandatory) // Must break at end of text, so that there always is at least one LB
]));
Development
After cloning the repository or modifying LineBreak.txt
the tables
have to be (re-)generated:
# Generate src/tables.rs
(cd gen-tables && cargo run)
# Run tests to make sure it was successful
cargo test