Skip to main content

OutlineTables

Struct OutlineTables 

Source
pub struct OutlineTables<'a> {
    pub glyf: Glyf<'a>,
    pub loca: Loca<'a>,
    pub gvar: Option<SelectedGvar<'a>>,
    pub hmtx: Option<GlyphMetricRecords<'a>>,
    pub os2: Option<Os2<'a>>,
    pub hvar: Option<Hvar<'a>>,
    pub units_per_em: u16,
    pub(super) coords: &'a [F2Dot14],
    pub(super) gvar_scalars: &'a [Fixed],
}
Expand description

An OutlineContext that reads the tables from a font.

new reads at the default instance and at selects a location. Nothing is cached between glyphs; a caller reading many glyphs at one location is better served by a context that caches.

Fields§

§glyf: Glyf<'a>

Glyph outlines.

§loca: Loca<'a>

The index into Self::glyf.

§gvar: Option<SelectedGvar<'a>>

Glyph variations, absent if the font does not vary.

§hmtx: Option<GlyphMetricRecords<'a>>

Source of the metrics for the first two phantom points.

§os2: Option<Os2<'a>>

Supplies the ascender and descender for the last two.

§hvar: Option<Hvar<'a>>

Only its presence is read: it changes how deltas apply to phantom points.

§units_per_em: u16

Design units per em, from head.

§coords: &'a [F2Dot14]

Not public, with gvar_scalars: the two are only correct together, and at is what keeps them so.

§gvar_scalars: &'a [Fixed]

Implementations§

Source§

impl<'a> OutlineTables<'a>

Source

pub fn new(font: &impl TableProvider<'a>) -> Result<Self, ReadError>

Reads the tables from a font.

Fails if glyf, loca or head is missing or malformed. The rest are optional: without gvar the font is treated as non-variable, and without hmtx or OS/2 the corresponding phantom point metrics are zero.

Source

pub fn at(self, coords: &'a [F2Dot14], gvar_scalars: &'a [Fixed]) -> Self

Reads at coords instead of the default instance.

gvar_scalars are the shared tuple scalars for coords, from SelectedGvar::compute_scalars; pass &[] to compute them per glyph instead. They are taken together because scalars for another location produce wrong deltas and nothing can detect it.

Trait Implementations§

Source§

impl<'a> Clone for OutlineTables<'a>

Source§

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

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'a> OutlineContext<'a> for OutlineTables<'a>

Source§

fn glyph(&self, glyph: GlyphId) -> Option<LocaGlyph<'a>>

Returns the glyph with the given identifier, or None if it is empty.
Source§

fn glyph_variation_data(&self, glyph: GlyphId) -> Option<GlyphVariationData<'a>>

Variation data for a glyph, or None if the font does not vary or the glyph has none.
Source§

fn has_gvar(&self) -> bool

True if the font has a gvar table, whatever any one glyph has in it. Read more
Source§

fn phantom_point_deltas(&self, glyph: GlyphId) -> Option<[Point<Fixed>; 4]>

Variation deltas for a glyph’s four phantom points. Read more
Source§

fn coords(&self) -> &[F2Dot14]

Normalized variation coordinates, empty for the default instance. Read more
Source§

fn gvar_scalars(&self) -> &[Fixed]

Scalars for gvar’s shared tuples at Self::coords, as SelectedGvar::compute_scalars fills them. Read more
Source§

fn units_per_em(&self) -> u16

Design units per em.
Source§

fn h_metrics(&self, glyph: GlyphId) -> (i32, i32)

Left side bearing and advance width, in font units. Read more
Source§

fn h_line_metrics(&self) -> (i32, i32)

The ascender and descender of the line horizontal text sits on, in font units. Read more
Source§

fn has_hvar(&self) -> bool

True if the font has an HVAR table. Read more
Source§

fn v_metrics(&self, glyph: GlyphId) -> Option<(i32, i32)>

Top side bearing and vertical advance for a glyph, in font units. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for OutlineTables<'a>

§

impl<'a> RefUnwindSafe for OutlineTables<'a>

§

impl<'a> Send for OutlineTables<'a>

§

impl<'a> Sync for OutlineTables<'a>

§

impl<'a> Unpin for OutlineTables<'a>

§

impl<'a> UnsafeUnpin for OutlineTables<'a>

§

impl<'a> UnwindSafe for OutlineTables<'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> ErasedDestructor for T
where T: 'static,

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.