pretext 0.1.0

Native Unicode text preparation and paragraph layout engine for Pretext.
Documentation
mod support;

use pretext::advanced::LayoutCursor;
use pretext::{ParagraphDirection, PretextParagraphOptions, WhiteSpaceMode};

#[test]
fn layout_interfaces_stay_in_sync() {
    let engine = support::bundled_engine();
    let style = support::default_style();
    let opts = PretextParagraphOptions {
        white_space: WhiteSpaceMode::Normal,
        paragraph_direction: ParagraphDirection::Auto,
        letter_spacing: 0.0,
        ..PretextParagraphOptions::default()
    };
    let text = "English العربية mixed with CJK 漢字 and emoji 👨‍👩‍👧‍👦 for parity.";

    let prepared = engine.prepare_paragraph(text, &style, &opts);
    let metrics = prepared.measure(&engine, 180.0, 22.0);
    let layout = prepared.layout(&engine, 180.0, 22.0);

    let mut walked = 0usize;
    engine.walk_line_ranges(&prepared, 180.0, |_| {
        walked += 1;
    });

    let mut streamed = 0usize;
    let mut cursor = LayoutCursor::default();
    while engine
        .layout_next_line(&prepared, &mut cursor, 180.0)
        .is_some()
    {
        streamed += 1;
    }

    assert_eq!(layout.line_count, metrics.line_count);
    assert_eq!(layout.line_count, walked);
    assert_eq!(layout.line_count, streamed);
}