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§
Sourcefn measure(&self, text: &str, font: FontId, px_size: u16) -> f32
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§
Sourcefn advance(&self, ch: char, font: FontId, px_size: u16) -> f32
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),
);