Incular logoIncular
API ReferenceText & Media

RichText & Spans

Nestable styled spans, inline spans, and widget spans.

TextSpan

Recursively nestable node; widget leaves occupy \u{FFFC}.

use incular::prelude::*;

fn main() {
    let accent = Color::rgba(60, 110, 220, 255);
    let span = TextSpan::new("Hello ")
        .style(TextStyle::new().bold())
        .child(TextSpan::new("world").style(TextStyle::new().color(accent)));
    println!("text: {}", span.plain_text());
    println!("len: {}", span.text_len());
    println!("runs: {}", span.flatten(&TextStyle::new()).len());
}
TypeShape
TextSpan{ text, style?, children[] }; new / empty / style / child / children / with_children
InlineSpanText(TextSpan) / Widget(WidgetSpan)
WidgetSpan{ id, size, alignment }; new / sized / with_size / alignment
StyledTextRun{ text, style, range } from flatten

InlineSpan and WidgetSpan

use incular::prelude::*;

fn main() {
    let span = TextSpan::new("Hi");
    println!("text: {}", span.plain_text());
    let widget = WidgetSpan::new(1u64).with_size(Size::new(10.0, 10.0));
    println!("widget size: {:?}", widget.size);
}

WidgetSpanAlignment: Baseline (default) / AboveBaseline / BelowBaseline / Middle / TextTop / TextBottom.

RichText model

Styled runs running — copy, paste, and run:

use incular::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let app = Application::new(|_cx| {
        Container::builder()
            .padding(EdgeInsets::all(24.0))
            .alignment(Alignment::CENTER)
            .child(RichText::new(
                TextSpan::new("Hello ")
                    .style(TextStyle::new().bold())
                    .child(
                        TextSpan::new("world").style(
                            TextStyle::new()
                                .font_size(18.0)
                                .color(Color::rgba(60, 110, 220, 255)),
                        ),
                    ),
            ))
            .build()
            .into()
    })?;
    incular::run(app)?;
    Ok(())
}

StyledTextRun { text, style, range }. TextSpanVisitor trait with visit_text / visit_widget hooks.

Related: Text, TextStyle.

On this page