pub struct GlyphCache { /* private fields */ }Expand description
Memoized glyph outlines in 1000/em text space.
A miss is cached too: a glyph that produced no outline is stored as None
so it is not recomputed, which is what PDFium’s own null-result memoization
does.
The outlines are held behind an Arc so a caller that wants one for longer
than the borrow — the renderer’s per-glyph placement record, which cannot
hold a borrow because placing the next glyph needs the cache mutably again —
takes a refcount rather than a copy of the path. Copying instead was 2891
BezPath clones and 3.3 MiB per render of one corpus page, on a document
where the copies were then never read.
Implementations§
Source§impl GlyphCache
impl GlyphCache
The same outline, as a handle that outlives the borrow.
For a caller that needs the outline after asking the cache for the next
glyph. Cloning the returned Arc is a refcount bump; cloning a borrowed
path copies every element.
The outline of a glyph drawn from the Arial ShouldUseFont stand-in.
The key must name crate::GlyphFallback::id; the host font’s
identity would collide with Arial on any shared glyph index.