Skip to main content

Type3Metrics

Struct Type3Metrics 

Source
pub struct Type3Metrics {
    pub width: f32,
    pub bbox: Rect,
    pub painted: Rect,
    pub colored: bool,
    pub objects: Vec<PageObject>,
}
Expand description

What a Type 3 glyph procedure declares about one character, and what it paints.

Fields§

§width: f32

The advance in glyph units, rounded as the C++ rounds it.

§bbox: Rect

The bounding box in glyph units, after the font matrix.

This is what the glyph declares, and it is the right box for measurement. It is the wrong box for a buffer: d1’s operands are scaled by a thousand on the way in and put back through the font matrix on the way out, so a font whose /FontMatrix is not the conventional thousandth leaves the scale uncancelled and the box far off the page. Use Type3Metrics::painted to size anything.

§painted: Rect

The extent the procedure’s objects actually cover, in glyph space.

The objects’ own union, with neither the thousandth scale nor the font matrix applied — CalcBoundingBox’s answer, and unaffected by an unconventional /FontMatrix because it never consults one.

§colored: bool

Whether the procedure declared its own colour with d0 rather than only a width and box with d1.

This is the coloured/uncoloured distinction the renderer needs: a d1 glyph takes the text object’s colour for every drawing operation inside it, whatever colours the procedure sets, while a d0 one keeps whatever it sets and falls back to the text object’s only where it sets none.

§objects: Vec<PageObject>

The objects the procedure paints, in glyph space — the procedure’s own coordinate system, before the font matrix.

A Type 3 glyph has no outline to cache: it is a content stream, and drawing it means walking these. Interpreting them here rather than at render time is what keeps the renderer free of the resolver, and it costs nothing extra — the metrics already had to open the stream.

Trait Implementations§

Source§

impl Clone for Type3Metrics

Source§

fn clone(&self) -> Type3Metrics

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 Debug for Type3Metrics

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Type3Metrics

Source§

fn eq(&self, other: &Type3Metrics) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Type3Metrics

Auto Trait Implementations§

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, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

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.