Skip to main content

Crate pdfboss_render

Crate pdfboss_render 

Source
Expand description

Page rasterization for pdfboss: paths, fills, strokes, clipping, color spaces, images and glyph outlines, rendered to an RGBA8 pixmap and encodable as PNG.

Glyph painting is staged behind GlyphPainting tiers: embedded TrueType only, then every embedded font program (TrueType, CFF, Type1, Type3), and finally Full, which additionally substitutes a replacement face for a non-embedded simple font (see crate::glyph and crate::substitute for the loader and the request/provider plumbing). A substitute face comes from either a caller-supplied directory (SubstituteSource::Dir) or the compiled-in OFL Croscore set (SubstituteSource::Builtin), the latter gated behind this crate’s substitute-fonts Cargo feature and queryable at runtime via builtin_fonts_available. Advance widths for a substituted standard-14 font additionally consult Adobe Core-14 AFM tables (pdfboss_encoding::standard_14_width) ahead of the substitute’s own hmtx, behind only the PDF’s own /Widths.

v1 limitations: /Symbol and /ZapfDingbats have no license-clean substitute, so they stay unpainted at every tier rather than borrowing an unrelated face’s glyphs; a “bold” sans substitute request is not visually distinct from regular weight (Arimo is a [wght] variable font, rendered at its Regular instance – only italic varies, via a separate static face); and advancing unpainted non-embedded text at AllEmbedded via the AFM tables is deferred to a later plan.

Structs§

Pixmap
An RGBA8 raster image with straight (non-premultiplied) alpha, row-major from the top-left.
RenderOptions
Options controlling a single page render.

Enums§

GlyphPainting
How aggressively the rasterizer turns text into filled outlines. Each tier is a strict superset of the previous one; the difference is only observable once the corresponding glyph loaders exist.
SubstituteSource
Where non-embedded glyph substitution (the Full GlyphPainting tier) draws replacement faces from. The default, None, substitutes nothing – Full behaves exactly like AllEmbedded until a caller opts in.

Functions§

builtin_fonts_available
Whether this binary was built with the substitute-fonts feature, i.e. whether SubstituteSource::Builtin has compiled-in faces to hand out. Callers (e.g. the CLI) use this to give an actionable message when Full is requested with no --font-dir and no compiled-in set, rather than silently rendering as if Full had never been asked for.
render_page
Renders a page at scale onto a white background. The pixel size is ceil(crop_w * scale) x ceil(crop_h * scale) (after /Rotate), and the base transform maps the crop box to device space with a y-flip and the page rotation applied.
render_page_with_options
Renders a page like render_page, honoring opts (currently the glyph painting tier). See render_page for the geometry contract.