Skip to main content

JustificationControl

Struct JustificationControl 

Source
pub struct JustificationControl {
    pub mode: JustifyMode,
    pub word_space: GlueSpec,
    pub sentence_space: GlueSpec,
    pub char_space: GlueSpec,
    pub penalties: SpacePenalty,
    pub french_spacing: bool,
    pub max_consecutive_hyphens: u8,
    pub emergency_stretch_factor: u32,
}
Expand description

Unified justification configuration.

Combines alignment mode, glue specs per space category, and penalty modifiers into a single configuration object that can be passed to the line-break optimizer.

Fields§

§mode: JustifyMode

Text alignment mode.

§word_space: GlueSpec

Glue spec for inter-word spaces.

§sentence_space: GlueSpec

Glue spec for inter-sentence spaces.

§char_space: GlueSpec

Glue spec for inter-character adjustments (tracking).

§penalties: SpacePenalty

Penalty modifiers for adjustment quality.

§french_spacing: bool

Whether to use French spacing (same space after sentences as words).

§max_consecutive_hyphens: u8

Maximum consecutive hyphens before incurring extra penalty.

§emergency_stretch_factor: u32

Emergency stretch multiplier (1/256ths): applied when no feasible break exists. 256 = 1x (no extra), 512 = 2x emergency stretch.

Implementations§

Source§

impl JustificationControl

Source

pub const TERMINAL: Self

Terminal default: left-aligned, rigid spaces.

Source

pub const READABLE: Self

Readable: fully justified with moderate elasticity.

Source

pub const TYPOGRAPHIC: Self

Typographic: full justification with fine-grained controls.

Source

pub const fn glue_for(&self, category: SpaceCategory) -> GlueSpec

Look up the glue spec for a given space category.

Source

pub fn total_natural(&self, spaces: &[SpaceCategory]) -> u32

Compute total natural width for a sequence of space categories.

Source

pub fn total_stretch(&self, spaces: &[SpaceCategory]) -> u32

Compute total stretchability for a sequence of space categories.

Source

pub fn total_shrink(&self, spaces: &[SpaceCategory]) -> u32

Compute total shrinkability for a sequence of space categories.

Source

pub fn adjustment_ratio( &self, slack_subcell: i32, total_stretch: u32, total_shrink: u32, ) -> Option<i32>

Compute the adjustment ratio for a line.

slack_subcell = desired_width - content_width - natural_space_width (positive means line is too short, needs stretching).

Returns ratio in 1/256ths, or None if adjustment is impossible (shrink required exceeds total shrinkability).

Source

pub fn badness(ratio_fixed: i32) -> u64

Compute badness for a given adjustment ratio.

Uses the standard TeX cubic formula: |r/256|³ × 10000. Returns u64::MAX for infeasible adjustments.

Source

pub fn line_demerits( &self, ratio_fixed: i32, spaces: &[SpaceCategory], break_penalty: i64, ) -> u64

Compute total demerits for a line, combining badness and penalties.

ratio_fixed: adjustment ratio in 1/256ths. spaces: the space categories on this line. break_penalty: penalty from the break point itself.

Source

pub fn validate(&self) -> Vec<&'static str>

Validate that the configuration is internally consistent.

Returns a list of warnings (empty = valid).

Trait Implementations§

Source§

impl Clone for JustificationControl

Source§

fn clone(&self) -> JustificationControl

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for JustificationControl

Source§

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

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

impl Default for JustificationControl

Source§

fn default() -> Self

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

impl Display for JustificationControl

Source§

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

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

impl Hash for JustificationControl

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for JustificationControl

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for JustificationControl

Source§

impl Eq for JustificationControl

Source§

impl StructuralPartialEq for JustificationControl

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> 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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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> 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