Word wrap for variable width fonts.

Can provide split lines or positions for each character.

Lines Split

```rust use ttfparser::Face; use ttfword_wrap::{TTFParserMeasure, WhiteSpaceWordWrap, Wrap};

// Load a TrueType font using ttf_parser let fontdata = std::fs::read("./testfonts/Roboto-Regular.ttf").expect("TTF should exist"); let fontface = Face::fromslice(&fontdata, 0).expect("TTF should be valid"); let measure = TTFParserMeasure::new(&fontface);

// Set up wrapping options, split on whitespace: let word_wrap = WhiteSpaceWordWrap::new(20000, &measure);

// Use the Wrap trait and split the &str let poem = "Mary had a little lamb whose fleece was white as snow"; let lines: Vec<&str> = poem.wrap(&wordwrap).collect(); asserteq!(lines[0], "Mary had a little lamb"); ```

Positions for each character

```rust use ttfparser::Face; use ttfword_wrap::{WrapWithPosition, WhiteSpaceWordWrap, TTFParserMeasure, Position};

// Load a TrueType font using ttf_parser let fontdata = std::fs::read("./testfonts/Roboto-Regular.ttf").expect("TTF should exist"); let fontface = Face::fromslice(&fontdata, 0).expect("TTF should be valid"); let measure = TTFParserMeasure::new(&fontface);

// Set up wrapping options, split on whitespace: let word_wrap = WhiteSpaceWordWrap::new(20000, &measure);

// Use the Wrap trait and split the &str let poem = "Mary had a little lamb whose fleece was white as snow"; let positions: Vec = poem.wrapwithposition(&word_wrap).collect();

// offset is in the unit (em) of the TTFParserMeasure. assert_eq!(positions[0], Position { ch: 'M', line: 0, offset: 0 }); ```