Rendering
Choosing an engine
Forme and Chromium side by side.
Every request sets engine to forme or chromium. There is no default.
Comparison
| Forme | Chromium | |
|---|---|---|
| Speed | Several times faster. Forme lays the document out without a browser. | Slower. Each Chromium render runs in a full browser session. |
| CSS | A subset; see Forme. | The CSS a current browser prints. |
| Page numbers | counter(page) and counter(pages) in @page margin boxes. | counter(page) and counter(pages) in @page margin boxes. |
| Running headers and footers | @page margin boxes. | @page margin boxes, or position: fixed elements repeated on every page. |
<thead> | Repeats on every page. | Repeats on every page. |
<tfoot> | Last page only. | Repeats on every page. |
| Arabic, Hebrew, Hindi, Thai | Rendered. | Rendered. |
| Arabic-Indic and Persian digits (٠-٩, ۰-۹) | Refused (422). | Rendered. |
| Chinese, Japanese, Korean | Refused (422) until a font covering them is linked or registered. | Rendered. |
| Emoji | Rendered in monochrome. | Rendered in color. |
| SVG | Not rendered, inline or as an image. | Rendered. |
| Images | PNG, JPEG and WebP. | As a current browser. |
scale option | Refused (400 option_not_supported_by_engine). | Supported. |
tagged option | Supported. | Supported. |
| PDF size | Similar to Chromium. tagged: false makes the file several times smaller. | Similar to Forme. tagged: false makes the file several times smaller. |
| Unsupported CSS | Refused with 422 unsupported_document, listing what was not supported. | Rendered as a browser prints it. |
Forme refuses most of what it cannot render. A few features are left out without a refusal; see Forme.
Recommendation
- Use Forme for documents that stay within its subset. Chinese, Japanese and Korean text needs a linked or registered font.
- Use Chromium otherwise, and whenever Forme refuses a document you cannot change.