Skip to main content

TextStyle

Struct TextStyle 

Source
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: u32

At most this many lines are laid out; 0 = unlimited.

§ellipsis: bool

End 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: FontFeatures

OpenType features for the shaper; none by default, which is the font’s own defaults (ligatures on, where it has them).

§underline: bool

A 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: UnderlineStyle

The underline’s shape: a line, a wave, dots.

§strikethrough: bool

A line through every glyph, where the face puts its strikeout.

§bold: bool

The 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: u32

The 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

Source

pub fn new(size: f32) -> TextStyle

A style at size logical px, sans, in the theme’s foreground, with a line height of 1.35 times the size, rounded.

Source

pub fn underline(self) -> TextStyle

Underlines the text in its own colour.

Source

pub fn underline_color(self, c: Color) -> TextStyle

An underline in its own colour rather than the text’s (a diagnostic’s red under keyword-coloured text). Turns the underline on.

Source

pub fn underline_style(self, s: UnderlineStyle) -> TextStyle

An underline of this shape. Turns the underline on.

Source

pub fn strikethrough(self) -> TextStyle

A line through the text.

Source

pub fn bold(self) -> TextStyle

The family’s bold (backlog F150).

Source

pub fn initial_letter(self, lines: u32) -> TextStyle

The first letter dropped through lines lines, an initial (backlog F164): see the field of that name.

Source

pub fn features(self, f: FontFeatures) -> TextStyle

OpenType features for the shaper; see FontFeatures.

Source

pub fn family(self, f: FontFamily) -> TextStyle

The face to shape with.

Source

pub fn mono(self) -> TextStyle

The stock monospace family.

Source

pub fn font(self, id: FontId) -> TextStyle

Shape with a registered font (see FontFamily::Custom).

Source

pub fn line_height(self, lh: f32) -> TextStyle

The line height in logical px, replacing the derived one.

Source

pub fn wrap(self, wrap: TextWrap) -> TextStyle

How lines break at the node’s width.

Source

pub fn nowrap(self) -> TextStyle

One line per paragraph, clipped to the node (TextWrap::None).

Source

pub fn max_lines(self, n: u32) -> TextStyle

Lay out at most n lines (0 = unlimited).

Source

pub fn ellipsis(self) -> TextStyle

Truncate with “…” instead of overflowing: a single line unless max_lines says otherwise.

Source

pub fn color(self, c: Color) -> TextStyle

The text colour, instead of the theme’s foreground.

Source

pub fn or_fg(self, fg: Color) -> TextStyle

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.

Source

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.

Trait Implementations§

Source§

impl Clone for TextStyle

Source§

fn clone(&self) -> TextStyle

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for TextStyle

Source§

impl Debug for TextStyle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for TextStyle

Source§

fn default() -> TextStyle

Returns the “default value” for a type. Read more
Source§

impl PartialEq for TextStyle

Source§

fn eq(&self, other: &TextStyle) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for TextStyle

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more