Trait TextMeasure

Source
pub trait TextMeasure {
    // Required method
    fn measure(&self, text: &str, font: FontId, px_size: u16) -> f32;

    // Provided method
    fn advance(&self, ch: char, font: FontId, px_size: u16) -> f32 { ... }
}
Expand description

Measures text width and per-character advance for simple layout/wrap.

Values are logical pixels. Implementations may be approximate and do not have to perform shaping, kerning, bidi reordering, or grapheme clustering.

§Examples

use ailloli_ui_core::FontId;
use ailloli_ui_text::{ApproxTextMeasure, TextMeasure};
assert!(ApproxTextMeasure.measure("abc", FontId::Ui, 12) > 0.0);

Required Methods§

Source

fn measure(&self, text: &str, font: FontId, px_size: u16) -> f32

Returns the estimated logical-pixel advance of text at px_size.

Empty text conventionally measures zero. px_size is forwarded as-is, including zero.

§Examples
use ailloli_ui_core::FontId;
use ailloli_ui_text::{ApproxTextMeasure, TextMeasure};
assert_eq!(ApproxTextMeasure.measure("", FontId::Mono, 14), 0.0);

Provided Methods§

Source

fn advance(&self, ch: char, font: FontId, px_size: u16) -> f32

Returns the logical-pixel advance of one Unicode scalar.

The default implementation UTF-8 encodes ch and delegates to TextMeasure::measure. Implementations may override it for efficiency.

§Examples
use ailloli_ui_core::FontId;
use ailloli_ui_text::{ApproxTextMeasure, TextMeasure};
assert_eq!(
    ApproxTextMeasure.advance('é', FontId::Ui, 10),
    ApproxTextMeasure.measure("é", FontId::Ui, 10),
);

Implementors§