pub struct DeterministicTextMeasurer {
pub char_width_factor: f64,
pub line_height_factor: f64,
}Fields§
§char_width_factor: f64§line_height_factor: f64Implementations§
Source§impl DeterministicTextMeasurer
impl DeterministicTextMeasurer
Sourcepub fn with_width_callback(
self,
width_px: impl Fn(&str, &TextStyle) -> f64 + Send + Sync + 'static,
) -> Arc<dyn TextMeasurer + Send + Sync> ⓘ
pub fn with_width_callback( self, width_px: impl Fn(&str, &TextStyle) -> f64 + Send + Sync + 'static, ) -> Arc<dyn TextMeasurer + Send + Sync> ⓘ
Uses caller-supplied widths with Merman’s wrapping behavior.
Uses width_px to measure complete candidate strings while Merman retains its wrapping and
line-height behavior. Vertical metrics and baseline offsets remain deterministic
approximations; the callback does not provide glyph bounds or font ascent/descent.
HTML candidates retain unselected U+00AD controls for shaping. The callback must measure
their zero glyph advance without deleting the input controls before shaping.
The callback must return a finite, non-negative width in CSS pixels. Use
crate::environment::HostTextMeasurer when measurement can fail or vary by operation.
pub fn normalized_text_lines(text: &str) -> Vec<String>
Trait Implementations§
Source§impl Clone for DeterministicTextMeasurer
impl Clone for DeterministicTextMeasurer
Source§impl Debug for DeterministicTextMeasurer
impl Debug for DeterministicTextMeasurer
Source§impl Default for DeterministicTextMeasurer
impl Default for DeterministicTextMeasurer
Source§impl TextMeasurer for DeterministicTextMeasurer
impl TextMeasurer for DeterministicTextMeasurer
fn measure(&self, text: &str, style: &TextStyle) -> TextMetrics
fn measure_wrapped( &self, text: &str, style: &TextStyle, max_width: Option<f64>, wrap_mode: WrapMode, ) -> TextMetrics
Source§fn measure_wrapped_with_raw_width(
&self,
text: &str,
style: &TextStyle,
max_width: Option<f64>,
wrap_mode: WrapMode,
) -> (TextMetrics, Option<f64>)
fn measure_wrapped_with_raw_width( &self, text: &str, style: &TextStyle, max_width: Option<f64>, wrap_mode: WrapMode, ) -> (TextMetrics, Option<f64>)
Source§fn measure_mermaid_calculate_text_dimensions(
&self,
text: &str,
style: &TextStyle,
) -> TextMetrics
fn measure_mermaid_calculate_text_dimensions( &self, text: &str, style: &TextStyle, ) -> TextMetrics
calculateTextDimensions(...) probe. Read moreSource§fn measure_svg_simple_text_bbox_height_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_simple_text_bbox_height_px( &self, text: &str, style: &TextStyle, ) -> f64
drawSimpleText(...).getBBox().height-style probes. Read moreSource§fn measure_svg_tspan_text_bbox_height_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_tspan_text_bbox_height_px( &self, text: &str, style: &TextStyle, ) -> f64
<text> node whose visible rows are child <tspan> nodes.Source§fn measure_svg_text_computed_length_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_text_computed_length_px( &self, text: &str, style: &TextStyle, ) -> f64
<tspan>.getComputedTextLength()-like widths (advance length along the
baseline). Read moreSource§fn measure_svg_text_bbox_x_with_ascii_overhang(
&self,
text: &str,
style: &TextStyle,
) -> (f64, f64)
fn measure_svg_text_bbox_x_with_ascii_overhang( &self, text: &str, style: &TextStyle, ) -> (f64, f64)
<text>.getBBox() horizontal extents while including ASCII overhang. Read moreSource§fn measure_svg_title_bbox_x(&self, text: &str, style: &TextStyle) -> (f64, f64)
fn measure_svg_title_bbox_x(&self, text: &str, style: &TextStyle) -> (f64, f64)
<text>
node (no whitespace-tokenized <tspan> runs). Read moreSource§fn measure_svg_simple_text_bbox_width_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_simple_text_bbox_width_px( &self, text: &str, style: &TextStyle, ) -> f64
drawSimpleText(...).getBBox().width-style probes
(used by upstream calculateTextWidth). Read moreSource§fn measure_svg_raw_text_bbox_width_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_raw_text_bbox_width_px( &self, text: &str, style: &TextStyle, ) -> f64
<text>.getBBox().width for diagram renderers that append text directly. Read moreSource§fn measure_svg_raw_text_bbox_height_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_raw_text_bbox_height_px( &self, text: &str, style: &TextStyle, ) -> f64
<text>.getBBox().height for direct text content. Read moreSource§fn measure_svg_raw_text_bbox_y_offset_px(
&self,
_text: &str,
_style: &TextStyle,
) -> Option<f64>
fn measure_svg_raw_text_bbox_y_offset_px( &self, _text: &str, _style: &TextStyle, ) -> Option<f64>
None means this profile does not
supply baseline facts; callers retain their established compatibility bounds.Source§fn measure_svg_raw_text_middle_bbox_y_offset_px(
&self,
_text: &str,
_style: &TextStyle,
) -> Option<f64>
fn measure_svg_raw_text_middle_bbox_y_offset_px( &self, _text: &str, _style: &TextStyle, ) -> Option<f64>
dominant-baseline: middle.
This is not the specially positioned Mermaid createFormattedText DOM.Source§fn measure_svg_raw_text_hanging_bbox_y_offset_px(
&self,
_text: &str,
_style: &TextStyle,
) -> Option<f64>
fn measure_svg_raw_text_hanging_bbox_y_offset_px( &self, _text: &str, _style: &TextStyle, ) -> Option<f64>
dominant-baseline: hanging.Source§fn measure_svg_text_bounding_client_rect_width_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_text_bounding_client_rect_width_px( &self, text: &str, style: &TextStyle, ) -> f64
<text>.getBoundingClientRect().width. Read moreSource§fn measure_svg_preserved_tspan_text_bbox_width_px(
&self,
text: &str,
style: &TextStyle,
) -> f64
fn measure_svg_preserved_tspan_text_bbox_width_px( &self, text: &str, style: &TextStyle, ) -> f64
Source§fn measure_svg_create_text_bbox_y_offset_px(
&self,
_text: &str,
_style: &TextStyle,
) -> f64
fn measure_svg_create_text_bbox_y_offset_px( &self, _text: &str, _style: &TextStyle, ) -> f64
Source§fn measure_svg_create_text_middle_bbox_y_offset_px(
&self,
_text: &str,
_style: &TextStyle,
) -> f64
fn measure_svg_create_text_middle_bbox_y_offset_px( &self, _text: &str, _style: &TextStyle, ) -> f64
createFormattedText(...) bbox y offset after the outer Architecture
label container applies inherited dominant-baseline: middle. Read moreAuto Trait Implementations§
impl Freeze for DeterministicTextMeasurer
impl RefUnwindSafe for DeterministicTextMeasurer
impl Send for DeterministicTextMeasurer
impl Sync for DeterministicTextMeasurer
impl Unpin for DeterministicTextMeasurer
impl UnsafeUnpin for DeterministicTextMeasurer
impl UnwindSafe for DeterministicTextMeasurer
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
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) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
replaced by palette::chromatic_adaptation::AdaptIntoUnclamped
Source§impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
impl<T, C> AdaptIntoUnclamped<T> for Cwhere
T: AdaptFromUnclamped<C>,
Source§type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
type Scalar = <T as AdaptFromUnclamped<C>>::Scalar
Source§fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
fn adapt_into_unclamped_with<M>(self) -> Twhere
M: LmsToXyz<<C as AdaptIntoUnclamped<T>>::Scalar> + XyzToLms<<C as AdaptIntoUnclamped<T>>::Scalar>,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T, C> ComponentsInto<C> for T
impl<T, C> ComponentsInto<C> for T
Source§fn components_into(self) -> C
fn components_into(self) -> C
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more