Skip to main content

DefaultTextSystem

Struct DefaultTextSystem 

Source
pub struct DefaultTextSystem { /* private fields */ }
Expand description

The GPUI text rendering sub system.

Implementations§

Source§

impl DefaultTextSystem

Source

pub fn new( platform_text_system: Arc<dyn PlatformTextSystem>, ) -> DefaultTextSystem

Create a new DefaultTextSystem with the given platform text system.

Source

pub fn platform_text_system(&self) -> &Arc<dyn PlatformTextSystem> ⓘ

The platform text system this engine wraps.

Source

pub fn font_generation(&self) -> &Arc<Atomic<usize>> ⓘ

The generation that advances whenever Self::add_fonts installs fonts.

Source

pub fn take_font_runs(&self) -> Vec<FontRun>

Takes a pooled font-run buffer, or an empty one when the pool is dry.

Source

pub fn recycle_font_runs(&self, font_runs: Vec<FontRun>)

Returns a font-run buffer to the pool for reuse.

Source

pub fn all_font_names(&self) -> Vec<String>

Get sorted, unique font family names available to the platform text system.

Includes fonts registered with Self::add_fonts.

Source

pub fn add_fonts(&self, fonts: Vec<Cow<'static, [u8]>>) -> Result<(), Error>

Add a font’s data to the text system.

Cached font resolution and line layouts are invalidated after installation. Layouts already in progress may complete against the previous font set.

Source

pub fn get_font_for_id(&self, id: FontId) -> Option<Font>

Get the Font for the Font Id.

Source

pub fn resolve_font(&self, font: &Font) -> FontId

Resolves the specified font, falling back to the default font stack if the font fails to load.

§Panics

Panics if the font and none of the fallbacks can be resolved.

Source

pub fn prewarm_fonts(&self, fonts: &[Font])

Prewarm any system font caches needed to shape text.

This may be expensive, so callers should generally invoke it on a background executor. Missing entries are still populated on demand by the normal shaping path.

Source

pub fn bounding_box(&self, font_id: FontId, font_size: Pixels) -> Bounds<Pixels>

Get the bounding box for the given font and font size. A font’s bounding box is the smallest rectangle that could enclose all glyphs in the font. superimposed over one another.

Source

pub fn typographic_bounds( &self, font_id: FontId, font_size: Pixels, character: char, ) -> Result<Bounds<Pixels>, Error>

Get the typographic bounds for the given character, in the given font and size.

Source

pub fn advance( &self, font_id: FontId, font_size: Pixels, ch: char, ) -> Result<Size<Pixels>, Error>

Get the advance width for the given character, in the given font and size.

Source

pub fn layout_width( &self, font_id: FontId, font_size: Pixels, ch: char, ) -> Pixels

Returns the shaped layout width of for the given character, in the given font and size.

Source

pub fn em_width( &self, font_id: FontId, font_size: Pixels, ) -> Result<Pixels, Error>

Returns the width of an em.

Uses the width of the m character in the given font and size.

Source

pub fn em_advance( &self, font_id: FontId, font_size: Pixels, ) -> Result<Pixels, Error>

Returns the advance width of an em.

Uses the advance width of the m character in the given font and size.

Source

pub fn ch_width( &self, font_id: FontId, font_size: Pixels, ) -> Result<Pixels, Error>

Returns the width of an ch.

Uses the width of the 0 character in the given font and size.

Source

pub fn ch_advance( &self, font_id: FontId, font_size: Pixels, ) -> Result<Pixels, Error>

Returns the advance width of an ch.

Uses the advance width of the 0 character in the given font and size.

Source

pub fn units_per_em(&self, font_id: FontId) -> u32

Get the number of font size units per ‘em square’, Per MDN: “an abstract square whose height is the intended distance between lines of type in the same type size”

Source

pub fn cap_height(&self, font_id: FontId, font_size: Pixels) -> Pixels

Get the height of a capital letter in the given font and size.

Source

pub fn x_height(&self, font_id: FontId, font_size: Pixels) -> Pixels

Get the height of the x character in the given font and size.

Source

pub fn ascent(&self, font_id: FontId, font_size: Pixels) -> Pixels

Get the recommended distance from the baseline for the given font

Source

pub fn descent(&self, font_id: FontId, font_size: Pixels) -> Pixels

Get the recommended distance below the baseline for the given font, in single spaced text.

Source

pub fn baseline_offset( &self, font_id: FontId, font_size: Pixels, line_height: Pixels, ) -> Pixels

Get the recommended baseline offset for the given font and line height.

Source

pub fn line_wrapper( self: Arc<DefaultTextSystem>, font: Font, font_size: Pixels, ) -> LineWrapperHandle

Returns a handle to a line wrapper, for the given font and font size.

Source

pub fn raster_bounds( &self, params: &RenderGlyphParams, ) -> Result<Bounds<DevicePixels>, Error>

Get the rasterized size and location of a specific, rendered glyph.

Source

pub fn rasterize_glyph( &self, params: &RenderGlyphParams, ) -> Result<(Size<DevicePixels>, Vec<u8>), Error>

Rasterizes a glyph, returning its size and coverage bitmap.

Source

pub fn glyph_dilation_for_color(&self, color: Hsla) -> u8

Returns the dilation level to use for a glyph painted in the given color.

Source

pub fn recommended_rendering_mode( &self, font_id: FontId, font_size: Pixels, ) -> TextRenderingMode

Returns the text rendering mode recommended by the platform for the given font and size. The return value will never be TextRenderingMode::PlatformDefault.

Trait Implementations§

Source§

impl TextSystem for DefaultTextSystem

Source§

fn take_missing_glyph_receiver(&self) -> Option<Box<dyn MissingGlyphReports>>

Takes the receiver for missing-glyph reports. Read more
Source§

fn enable_missing_glyph_reporting(&self)

Starts reporting grapheme clusters that exhaust font fallback.
Source§

fn disable_missing_glyph_reporting(&self)

Stops reporting missing glyphs and discards any reports collected so far.
Source§

fn platform_text_system(&self) -> &Arc<dyn PlatformTextSystem> ⓘ

The platform text system this engine wraps.
Source§

fn all_font_names(&self) -> Vec<String>

All font names known to the text system, including fallbacks.
Source§

fn add_fonts(&self, fonts: Vec<Cow<'static, [u8]>>) -> Result<(), Error>

Add font data to the text system.
Source§

fn get_font_for_id(&self, id: FontId) -> Option<Font>

The font for a font id, if it was resolved through this system.
Source§

fn resolve_font(&self, font: &Font) -> FontId

Resolve a font to its id, falling back to the default stack.
Source§

fn prewarm_fonts(&self, fonts: &[Font])

Prewarm any system font caches needed to shape text.
Source§

fn bounding_box(&self, font_id: FontId, font_size: Pixels) -> Bounds<Pixels>

The bounding box for a font, at a size.
Source§

fn typographic_bounds( &self, font_id: FontId, font_size: Pixels, character: char, ) -> Result<Bounds<Pixels>, Error>

The typographic bounds for a character, in a font and size.
Source§

fn advance( &self, font_id: FontId, font_size: Pixels, ch: char, ) -> Result<Size<Pixels>, Error>

The advance width for a character, in a font and size.
Source§

fn layout_width(&self, font_id: FontId, font_size: Pixels, ch: char) -> Pixels

The shaped layout width of a character, in a font and size.
Source§

fn em_width(&self, font_id: FontId, font_size: Pixels) -> Result<Pixels, Error>

The width of an em, in a font and size.
Source§

fn em_advance( &self, font_id: FontId, font_size: Pixels, ) -> Result<Pixels, Error>

The advance width of an em, in a font and size.
Source§

fn ch_width(&self, font_id: FontId, font_size: Pixels) -> Result<Pixels, Error>

The width of the 0 character, in a font and size.
Source§

fn ch_advance( &self, font_id: FontId, font_size: Pixels, ) -> Result<Pixels, Error>

The advance width of the 0 character, in a font and size.
Source§

fn units_per_em(&self, font_id: FontId) -> u32

The number of font units per em square.
Source§

fn cap_height(&self, font_id: FontId, font_size: Pixels) -> Pixels

The cap height of a font, at a size.
Source§

fn x_height(&self, font_id: FontId, font_size: Pixels) -> Pixels

The x-height of a font, at a size.
Source§

fn ascent(&self, font_id: FontId, font_size: Pixels) -> Pixels

The ascent of a font, at a size.
Source§

fn descent(&self, font_id: FontId, font_size: Pixels) -> Pixels

The descent of a font, at a size.
Source§

fn baseline_offset( &self, font_id: FontId, font_size: Pixels, line_height: Pixels, ) -> Pixels

The recommended baseline offset for a font, size, and line height.
Source§

fn take_font_runs(&self) -> Vec<FontRun>

Take a pooled font-run buffer, or an empty one when the pool is dry.
Source§

fn recycle_font_runs(&self, font_runs: Vec<FontRun>)

Return a font-run buffer to the pool for reuse.
Source§

fn line_wrapper( self: Arc<DefaultTextSystem>, font: Font, font_size: Pixels, ) -> LineWrapperHandle

A line wrapper for the given font and size, returned from a pool.
Source§

fn raster_bounds( &self, params: &RenderGlyphParams, ) -> Result<Bounds<DevicePixels>, Error>

The rasterized size and location of a glyph.
Source§

fn rasterize_glyph( &self, params: &RenderGlyphParams, ) -> Result<(Size<DevicePixels>, Vec<u8>), Error>

Rasterize a glyph, returning its size and coverage bitmap.
Source§

fn glyph_dilation_for_color(&self, color: Hsla) -> u8

The dilation level to use for a glyph painted in the given color.
Source§

fn recommended_rendering_mode( &self, font_id: FontId, font_size: Pixels, ) -> TextRenderingMode

The rendering mode recommended for a font and size.
Source§

fn layout_index(&self) -> LineLayoutIndex

Saves the current cache position so it can be reused or truncated later.
Source§

fn reuse_layouts(&self, range: Range<LineLayoutIndex>)

Re-inserts layouts from the previous frame created before range.
Source§

fn truncate_layouts(&self, index: LineLayoutIndex)

Drops layouts created after index.
Source§

fn finish_frame(&self)

Ages the current frame’s layouts into the previous frame.
Source§

fn layout_wrapped_line( &self, text: &str, font_size: Pixels, runs: &[FontRun], wrap_width: Option<Pixels>, max_lines: Option<usize>, ) -> Arc<WrappedLineLayout> ⓘ

Shapes and wraps text, reusing a cached layout when the inputs match.
Source§

fn layout_line( &self, text: &str, font_size: Pixels, runs: &[FontRun], force_width: Option<Pixels>, ) -> Arc<LineLayout> ⓘ

Shapes a single line of text, reusing a cached layout when the inputs match.
Source§

fn try_layout_line_by_hash( &self, text_hash: u64, text_len: usize, font_size: Pixels, runs: &[FontRun], force_width: Option<Pixels>, ) -> Option<Arc<LineLayout>>

Probe the line-layout cache using a caller-provided content hash.
Source§

fn layout_line_by_hash( &self, text_hash: u64, text_len: usize, font_size: Pixels, runs: &[FontRun], force_width: Option<Pixels>, materialize_text: Box<dyn FnOnce() -> SharedString>, ) -> Arc<LineLayout> ⓘ

Layout a line using a caller-provided content hash as the cache key.

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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