pub struct TextStyle {Show 14 fields
pub size: f32,
pub line_height: f32,
pub color: Option<Color>,
pub family: FontFamily,
pub wrap: TextWrap,
pub max_lines: u32,
pub ellipsis: bool,
pub features: FontFeatures,
pub underline: bool,
pub underline_color: Option<Color>,
pub underline_style: UnderlineStyle,
pub strikethrough: bool,
pub bold: bool,
pub initial_letter: u32,
}Expand description
How a run of text is shaped and painted: size, line height, colour, family, wrapping, line limits, OpenType features and decorations.
TextStyle::new takes the font size and derives a line height; the
rest are builders. A style with no colour paints in the theme’s
foreground, so plain text is legible on both the light and dark base.
use kui_core::{Color, FontFamily, TextStyle, TextWrap};
let body = TextStyle::new(15.0).line_height(22.0);
let caption = TextStyle::new(12.0).color(Color::hex(0x8a8fa3ff)).max_lines(2).ellipsis();
let code = TextStyle::new(13.0).family(FontFamily::Mono).wrap(TextWrap::None);
let link = TextStyle::new(15.0).underline().color(Color::hex(0x3b5bd4ff));
assert_eq!(body.color, None); // the theme's foreground
assert_eq!(caption.max_lines, 2);
assert!(code.wrap == TextWrap::None && link.underline);Fields§
§size: f32§line_height: f32§color: Option<Color>None is the theme’s foreground, filled in as the text enters the
tree so nothing downstream of that ever sees a None.
family: FontFamily§wrap: TextWrap§max_lines: u32At most this many lines are laid out; 0 = unlimited.
ellipsis: boolEnd the last line with “…” when the text was cut off. Alone it
means a single line (max_lines 1); with max_lines it clamps.
features: FontFeaturesOpenType features for the shaper; none by default, which is the font’s own defaults (ligatures on, where it has them).
underline: boolA line under every glyph, where the face puts its underline. Paint only: not part of what the text is shaped as.
underline_color: Option<Color>The underline’s own colour; None is the text’s.
underline_style: UnderlineStyleThe underline’s shape: a line, a wave, dots.
strikethrough: boolA line through every glyph, where the face puts its strikeout.
bold: boolThe family’s bold, as a span’s bold is (backlog F150): its bold
face, or its regular drawn bold where it has none (backlog F100).
A span inside is bold too; it cannot be lighter than its text.
initial_letter: u32The first letter as an initial — a drop cap — this many lines
tall (backlog F164): its top level with the first line’s capitals,
its foot on the last one’s baseline, the lines beside it moved in
past it and the ones below at full width again, as CSS’s
initial-letter. The letter is the text’s first, with any opening
punctuation before it; it keeps its span’s face and colour and is
sized to the drop. Still one text: a caret, a hit, a selection and
the access tree read it where it is drawn. 0 and 1 are none; a text
with a max_lines or an ellipsis, a right-to-left one and an
editor have none.
Implementations§
Source§impl TextStyle
impl TextStyle
Sourcepub fn new(size: f32) -> Self
pub fn new(size: f32) -> Self
A style at size logical px, sans, in the theme’s foreground, with
a line height of 1.35 times the size, rounded.
Sourcepub fn underline_color(self, c: Color) -> Self
pub fn underline_color(self, c: Color) -> Self
An underline in its own colour rather than the text’s (a diagnostic’s red under keyword-coloured text). Turns the underline on.
Sourcepub fn underline_style(self, s: UnderlineStyle) -> Self
pub fn underline_style(self, s: UnderlineStyle) -> Self
An underline of this shape. Turns the underline on.
Sourcepub fn strikethrough(self) -> Self
pub fn strikethrough(self) -> Self
A line through the text.
Sourcepub fn initial_letter(self, lines: u32) -> Self
pub fn initial_letter(self, lines: u32) -> Self
The first letter dropped through lines lines, an initial
(backlog F164): see the field of that name.
Sourcepub fn features(self, f: FontFeatures) -> Self
pub fn features(self, f: FontFeatures) -> Self
OpenType features for the shaper; see FontFeatures.
Sourcepub fn family(self, f: FontFamily) -> Self
pub fn family(self, f: FontFamily) -> Self
The face to shape with.
Sourcepub fn line_height(self, lh: f32) -> Self
pub fn line_height(self, lh: f32) -> Self
The line height in logical px, replacing the derived one.
Sourcepub fn ellipsis(self) -> Self
pub fn ellipsis(self) -> Self
Truncate with “…” instead of overflowing: a single line unless
max_lines says otherwise.
Sourcepub fn or_fg(self, fg: Color) -> Self
pub fn or_fg(self, fg: Color) -> Self
This style with fg where it named no colour of its own: what the
core stamps on as the text enters the tree, so the shaping caches,
the display list and every binding see a resolved colour.
Sourcepub fn color_or_default(&self) -> Color
pub fn color_or_default(&self) -> Color
The colour this style paints in, falling back to what kui painted before there were themes. For the handful of places that hold a style the core never stamped.