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: f32The advance in glyph units, rounded as the C++ rounds it.
bbox: RectThe 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: RectThe 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: boolWhether 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
impl Clone for Type3Metrics
Source§fn clone(&self) -> Type3Metrics
fn clone(&self) -> Type3Metrics
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more