Skip to main content

JagTextProvider

Struct JagTextProvider 

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

Text provider backed by jag-text (HarfBuzz) for shaping and swash for rasterization.

This uses a primary jag-text FontFace for text and an optional emoji font for color emoji fallback. Delegates shaping to TextShaper::shape_ltr, then rasterizes glyphs via swash bitmap images.

Supports CSS font-family stack resolution: when a TextRun specifies a family string (e.g. "Georgia, 'Times New Roman', serif"), the provider parses the stack and resolves candidates against the system font database, caching loaded fonts for subsequent requests.

Implementations§

Source§

impl JagTextProvider

Source

pub fn from_bytes( bytes: &[u8], orientation: SubpixelOrientation, ) -> Result<Self>

Source

pub fn from_bytes_with_emoji( bytes: &[u8], emoji_bytes: &[u8], orientation: SubpixelOrientation, ) -> Result<Self>

Create a provider with a primary font and an emoji font for fallback.

Source

pub fn from_system_fonts(orientation: SubpixelOrientation) -> Result<Self>

Construct from a reasonable system sans-serif font using fontdb. Also attempts to load a system emoji font for color emoji fallback.

Source

pub fn register_web_font( &self, family: &str, data: Vec<u8>, weight: u16, style: FontStyle, ) -> Result<bool>

Register a web font from raw TTF/OTF bytes.

Idempotent: returns Ok(false) if a font with the same family + weight + style is already registered.

Thread-safe: font_cache is Mutex-protected.

The data must be raw TTF or OTF — WOFF/WOFF2 must be decompressed before calling this method.

Source

pub fn layout_paragraph( &self, text: &str, size_px: f32, max_width: Option<f32>, ) -> TextLayout

Layout a paragraph using jag-text’s TextLayout with optional width-based wrapping.

This exposes jag-text’s multi-line layout (including per-line baselines) so that callers can build GPU-ready glyph batches without relying on PassManager baseline heuristics.

Trait Implementations§

Source§

impl TextProvider for JagTextProvider

Source§

fn rasterize_run(&self, run: &TextRun) -> Vec<RasterizedGlyph>

Source§

fn shape_paragraph(&self, text: &str, size_px: f32) -> Option<ShapedParagraph>

Optional paragraph shaping hook for advanced wrappers. Read more
Source§

fn line_metrics(&self, px: f32) -> Option<LineMetrics>

Source§

fn measure_run(&self, run: &TextRun) -> f32

Measure the total advance width of a styled text run (in the same pixel units as run.size). The default delegates to shape_paragraph, ignoring weight/style/family. Providers that support multiple font faces should override this to select the correct face.
Source§

fn register_web_font( &self, family: &str, data: Vec<u8>, weight: u16, style: FontStyle, ) -> Result<bool>

Register a web font from raw TTF/OTF bytes. Returns Ok(true) if newly registered, Ok(false) if already present. Default implementation returns Ok(false) (no-op).
Source§

fn cache_tag(&self) -> u64

Optional cache tag to distinguish providers in text caches. The default implementation returns 0, which is sufficient when a single provider is used with a given PassManager.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
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, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
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,