read_fonts::tables::postscript

Struct BlendState

source
pub struct BlendState<'a> { /* private fields */ }
Expand description

State for processing the blend operator for DICTs and charstrings.

To avoid allocation, scalars are computed on demand but this can be prohibitively expensive in charstrings where blends are applied to large numbers of elements. To amortize the cost, a fixed number of precomputed scalars are stored internally and the overflow is computed as needed.

The MAX_PRECOMPUTED_SCALARS constant determines the size of the internal buffer (currently 16).

See https://learn.microsoft.com/en-us/typography/opentype/spec/cff2charstr#45-variation-data-operators

Implementations§

source§

impl<'a> BlendState<'a>

source

pub fn new( store: ItemVariationStore<'a>, coords: &'a [F2Dot14], store_index: u16, ) -> Result<Self, Error>

source

pub fn set_store_index(&mut self, store_index: u16) -> Result<(), Error>

Sets the active variation store index.

This should be called with the operand of the vsindex operator for both DICTs and charstrings.

source

pub fn region_count(&self) -> Result<usize, Error>

Returns the number of variation regions for the currently active variation store index.

source

pub fn scalars( &self, ) -> Result<impl Iterator<Item = Result<Fixed, Error>> + '_, Error>

Returns an iterator yielding scalars for each variation region of the currently active variation store index.

Auto Trait Implementations§

§

impl<'a> Freeze for BlendState<'a>

§

impl<'a> RefUnwindSafe for BlendState<'a>

§

impl<'a> Send for BlendState<'a>

§

impl<'a> Sync for BlendState<'a>

§

impl<'a> Unpin for BlendState<'a>

§

impl<'a> UnwindSafe for BlendState<'a>

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, 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> 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.