Struct Outlines

Source
pub(crate) struct Outlines<'a> {
    pub(crate) font: FontRef<'a>,
    pub(crate) glyph_metrics: GlyphHMetrics<'a>,
    offset_data: FontData<'a>,
    global_subrs: Index<'a>,
    top_dict: TopDict<'a>,
    version: u16,
    units_per_em: u16,
}
Expand description

Type for loading, scaling and hinting outlines in CFF/CFF2 tables.

The skrifa crate provides a higher level interface for this that handles caching and abstracting over the different outline formats. Consider using that if detailed control over resources is not required.

§Subfonts

CFF tables can contain multiple logical “subfonts” which determine the state required for processing some subset of glyphs. This state is accessed using the FDArray and FDSelect operators to select an appropriate subfont for any given glyph identifier. This process is exposed on this type with the subfont_index method to retrieve the subfont index for the requested glyph followed by using the subfont method to create an appropriately configured subfont for that glyph.

Fields§

§font: FontRef<'a>§glyph_metrics: GlyphHMetrics<'a>§offset_data: FontData<'a>§global_subrs: Index<'a>§top_dict: TopDict<'a>§version: u16§units_per_em: u16

Implementations§

Source§

impl<'a> Outlines<'a>

Source

pub fn new(font: &FontRef<'a>) -> Option<Self>

Creates a new scaler for the given font.

This will choose an underlying CFF2 or CFF table from the font, in that order.

Source

pub fn from_cff(font: &FontRef<'a>, units_per_em: u16) -> Option<Self>

Source

pub fn from_cff2(font: &FontRef<'a>, units_per_em: u16) -> Option<Self>

Source

pub fn is_cff2(&self) -> bool

Source

pub fn units_per_em(&self) -> u16

Source

pub fn glyph_count(&self) -> usize

Returns the number of available glyphs.

Source

pub fn subfont_count(&self) -> u32

Returns the number of available subfonts.

Source

pub fn subfont_index(&self, glyph_id: GlyphId) -> u32

Returns the subfont (or Font DICT) index for the given glyph identifier.

Source

pub fn subfont( &self, index: u32, size: Option<f32>, coords: &[F2Dot14], ) -> Result<Subfont, Error>

Creates a new subfont for the given index, size, normalized variation coordinates and hinting state.

The index of a subfont for a particular glyph can be retrieved with the subfont_index method.

Source

pub fn draw( &self, subfont: &Subfont, glyph_id: GlyphId, coords: &[F2Dot14], hint: bool, pen: &mut impl OutlinePen, ) -> Result<(), Error>

Loads and scales an outline for the given subfont instance, glyph identifier and normalized variation coordinates.

Before calling this method, use subfont_index to retrieve the subfont index for the desired glyph and then subfont to create an instance of the subfont for a particular size and location in variation space. Creating subfont instances is not free, so this process is exposed in discrete steps to allow for caching.

The result is emitted to the specified pen.

Source

fn private_dict_range(&self, subfont_index: u32) -> Result<Range<usize>, Error>

Trait Implementations§

Source§

impl<'a> Clone for Outlines<'a>

Source§

fn clone(&self) -> Outlines<'a>

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

Auto Trait Implementations§

§

impl<'a> Freeze for Outlines<'a>

§

impl<'a> RefUnwindSafe for Outlines<'a>

§

impl<'a> Send for Outlines<'a>

§

impl<'a> Sync for Outlines<'a>

§

impl<'a> Unpin for Outlines<'a>

§

impl<'a> UnwindSafe for Outlines<'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> 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<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> 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, 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.