Skip to main content

Math

Struct Math 

Source
pub struct Math<'a> { /* private fields */ }
Expand description

The MATH table

Implementations§

Source§

impl<'a> Math<'a>

Source

pub const MIN_SIZE: usize

Source

pub fn resolve_offset<O: Offset, R: FontRead<'a, Args = ()>>( &self, offset: O, ) -> Result<R, ReadError>

Resolve the provided offset from the start of this table.

Source

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

Return a reference to this table’s raw data.

We use this in the compile crate to resolve offsets.

Source

pub fn shape(&self) -> &Self

👎Deprecated:

just use the base type directly

Return a reference to the table’s ‘Shape’ struct.

This is a low level implementation detail, but it can be useful in some cases where you want to know things about a table’s layout, such as the byte offsets of specific fields.

Source

pub fn version(&self) -> MajorMinor

(major, minor) Version for the MATH table (1,0)

Source

pub fn math_constants_offset(&self) -> Offset16

Offset to MathConstants table, from beginning of MATH table.

Source

pub fn math_constants(&self) -> Result<MathConstants<'a>, ReadError>

Attempt to resolve math_constants_offset.

Source

pub fn math_glyph_info_offset(&self) -> Offset16

Offset to MathGlyphInfo table, from beginning of MATH table.

Source

pub fn math_glyph_info(&self) -> Result<MathGlyphInfo<'a>, ReadError>

Attempt to resolve math_glyph_info_offset.

Source

pub fn math_variants_offset(&self) -> Offset16

Offset to MathVariants table, from beginning of MATH table.

Source

pub fn math_variants(&self) -> Result<MathVariants<'a>, ReadError>

Attempt to resolve math_variants_offset.

Source

pub fn version_byte_range(&self) -> Range<usize> ⓘ

Source

pub fn math_constants_offset_byte_range(&self) -> Range<usize> ⓘ

Source

pub fn math_glyph_info_offset_byte_range(&self) -> Range<usize> ⓘ

Source

pub fn math_variants_offset_byte_range(&self) -> Range<usize> ⓘ

Source§

impl Math<'_>

Source

pub fn has_swapped_min_heights(&self) -> bool

Whether this is one of the Cambria Math builds that stores delimitedSubFormulaMinHeight and displayOperatorMinHeight the wrong way round.

A display mode n-ary operator should have the taller of the two thresholds, and in these builds it does not. Microsoft’s implementation reads them the other way round, so anything that wants to lay out maths the way Word does has to swap them back; HarfBuzz does the same. This only reports the font, and leaves that decision to the caller, so that the constants keep saying what the font says.

The font is recognized by its table length together with the two values, since either value alone is one a font could legitimately hold. That means it only answers true for a table read as a table: a Math read from a buffer with anything after it measures longer and is not recognized.

See harfbuzz#4653.

Trait Implementations§

Source§

impl<'a> Clone for Math<'a>

Source§

fn clone(&self) -> Self

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 Default for Math<'_>

Source§

fn default() -> Self

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

impl<'a> FontRead<'a> for Math<'a>

Source§

fn read_with_args(data: FontData<'a>, _: ()) -> Result<Self, ReadError>

Read an item, performing validation. Read more
Source§

fn read(data: FontData<'a>) -> Result<Self, ReadError>
where Self: FontRead<'a, Args = ()>,

Read an instance of Self from the provided data, performing validation. Read more
Source§

impl<'a> MinByteRange<'a> for Math<'a>

Source§

impl ReadArgs for Math<'_>

Source§

impl TopLevelTable for Math<'_>

Source§

const TAG: Tag

MATH

Auto Trait Implementations§

§

impl<'a> Freeze for Math<'a>

§

impl<'a> RefUnwindSafe for Math<'a>

§

impl<'a> Send for Math<'a>

§

impl<'a> Sync for Math<'a>

§

impl<'a> Unpin for Math<'a>

§

impl<'a> UnsafeUnpin for Math<'a>

§

impl<'a> UnwindSafe for Math<'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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.