Struct FontRef

Source
pub struct FontRef<'a> {
    pub(crate) data: FontData<'a>,
    pub table_directory: TableDirectory<'a>,
    pub(crate) ttc_index: u32,
    pub(crate) in_ttc: bool,
    pub(crate) table_directory_sorted: bool,
}
Expand description

Reference to an in-memory font.

This is a simple implementation of the TableProvider trait backed by a borrowed slice containing font data.

Fields§

§data: FontData<'a>§table_directory: TableDirectory<'a>§ttc_index: u32

The index of this font in a TrueType collection

§in_ttc: bool

Whether this font is a member of a TrueType collection.

We use a bool rather than an Option to avoid bloating the struct size.

§table_directory_sorted: bool

Implementations§

Source§

impl<'a> FontRef<'a>

Source

pub fn new(data: &'a [u8]) -> Result<Self, ReadError>

Creates a new reference to an in-memory font backed by the given data.

The data must be a single font (not a font collection) and must begin with a table directory to be considered valid.

To load a font from a font collection, use FontRef::from_index instead.

Source

pub fn from_index(data: &'a [u8], index: u32) -> Result<Self, ReadError>

Creates a new reference to an in-memory font at the specified index backed by the given data.

The data slice must begin with either a table directory or a ttc header to be considered valid.

In other words, this accepts either font collection (ttc) or single font (ttf/otf) files. If a single font file is provided, the index parameter must be 0.

Source

pub fn data(&self) -> FontData<'a>

Returns the underlying font data.

This is the base from which tables are loaded, meaning that for TrueType collection files, this will be the entire font file data.

Source

pub fn ttc_index(&self) -> Option<u32>

If the font is in a TrueType collection (ttc) file, returns the index of the font in that collection.

Source

pub fn table_directory(&self) -> &TableDirectory<'a>

Returns the associated table directory.

Source

pub fn table_data(&self, tag: Tag) -> Option<FontData<'a>>

Returns the data for the table with the specified tag, if present.

Source

pub fn fonts( data: &'a [u8], ) -> impl Iterator<Item = Result<FontRef<'a>, ReadError>> + 'a + Clone

Returns an iterator over all of the available fonts in the given font data.

Source

pub(crate) fn with_table_directory( data: FontData<'a>, table_directory: TableDirectory<'a>, ttc_index: Option<u32>, ) -> Result<Self, ReadError>

Trait Implementations§

Source§

impl<'a> Clone for FontRef<'a>

Source§

fn clone(&self) -> FontRef<'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
Source§

impl<'a> TableProvider<'a> for FontRef<'a>

Source§

fn data_for_tag(&self, tag: Tag) -> Option<FontData<'a>>

Source§

fn expect_data_for_tag(&self, tag: Tag) -> Result<FontData<'a>, ReadError>

Source§

fn expect_table<T: TopLevelTable + FontRead<'a>>(&self) -> Result<T, ReadError>

Source§

fn head(&self) -> Result<Head<'a>, ReadError>

Source§

fn name(&self) -> Result<Name<'a>, ReadError>

Source§

fn hhea(&self) -> Result<Hhea<'a>, ReadError>

Source§

fn vhea(&self) -> Result<Vhea<'a>, ReadError>

Source§

fn hmtx(&self) -> Result<Hmtx<'a>, ReadError>

Source§

fn hdmx(&self) -> Result<Hdmx<'a>, ReadError>

Source§

fn vmtx(&self) -> Result<Vmtx<'a>, ReadError>

Source§

fn vorg(&self) -> Result<Vorg<'a>, ReadError>

Source§

fn fvar(&self) -> Result<Fvar<'a>, ReadError>

Source§

fn avar(&self) -> Result<Avar<'a>, ReadError>

Source§

fn hvar(&self) -> Result<Hvar<'a>, ReadError>

Source§

fn vvar(&self) -> Result<Vvar<'a>, ReadError>

Source§

fn mvar(&self) -> Result<Mvar<'a>, ReadError>

Source§

fn maxp(&self) -> Result<Maxp<'a>, ReadError>

Source§

fn os2(&self) -> Result<Os2<'a>, ReadError>

Source§

fn post(&self) -> Result<Post<'a>, ReadError>

Source§

fn gasp(&self) -> Result<Gasp<'a>, ReadError>

Source§

fn loca(&self, is_long: impl Into<Option<bool>>) -> Result<Loca<'a>, ReadError>

is_long can be optionally provided, if known, otherwise we look it up in head.
Source§

fn glyf(&self) -> Result<Glyf<'a>, ReadError>

Source§

fn gvar(&self) -> Result<Gvar<'a>, ReadError>

Source§

fn cvt(&self) -> Result<&'a [BigEndian<i16>], ReadError>

Returns the array of entries for the control value table which is used for TrueType hinting.
Source§

fn cvar(&self) -> Result<Cvar<'a>, ReadError>

Source§

fn cff(&self) -> Result<Cff<'a>, ReadError>

Source§

fn cff2(&self) -> Result<Cff2<'a>, ReadError>

Source§

fn cmap(&self) -> Result<Cmap<'a>, ReadError>

Source§

fn gdef(&self) -> Result<Gdef<'a>, ReadError>

Source§

fn gpos(&self) -> Result<Gpos<'a>, ReadError>

Source§

fn gsub(&self) -> Result<Gsub<'a>, ReadError>

Source§

fn feat(&self) -> Result<Feat<'a>, ReadError>

Source§

fn ltag(&self) -> Result<Ltag<'a>, ReadError>

Source§

fn ankr(&self) -> Result<Ankr<'a>, ReadError>

Source§

fn trak(&self) -> Result<Trak<'a>, ReadError>

Source§

fn morx(&self) -> Result<Morx<'a>, ReadError>

Source§

fn kerx(&self) -> Result<Kerx<'a>, ReadError>

Source§

fn kern(&self) -> Result<Kern<'a>, ReadError>

Source§

fn colr(&self) -> Result<Colr<'a>, ReadError>

Source§

fn cpal(&self) -> Result<Cpal<'a>, ReadError>

Source§

fn cblc(&self) -> Result<Cblc<'a>, ReadError>

Source§

fn cbdt(&self) -> Result<Cbdt<'a>, ReadError>

Source§

fn eblc(&self) -> Result<Eblc<'a>, ReadError>

Source§

fn ebdt(&self) -> Result<Ebdt<'a>, ReadError>

Source§

fn sbix(&self) -> Result<Sbix<'a>, ReadError>

Source§

fn stat(&self) -> Result<Stat<'a>, ReadError>

Source§

fn svg(&self) -> Result<Svg<'a>, ReadError>

Source§

fn varc(&self) -> Result<Varc<'a>, ReadError>

Source§

fn meta(&self) -> Result<Meta<'a>, ReadError>

Source§

fn base(&self) -> Result<Base<'a>, ReadError>

Source§

fn dsig(&self) -> Result<Dsig<'a>, ReadError>

Auto Trait Implementations§

§

impl<'a> Freeze for FontRef<'a>

§

impl<'a> RefUnwindSafe for FontRef<'a>

§

impl<'a> Send for FontRef<'a>

§

impl<'a> Sync for FontRef<'a>

§

impl<'a> Unpin for FontRef<'a>

§

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