Supported browser rendering
View SourceThe HTML renderer supports a document-oriented subset of browser rendering for reports, invoices, statements, forms, and labels. Use the overview below to choose a layout, then follow the linked reference for supported values and restrictions.
Supported behavior
| Area | What you can use |
|---|---|
| HTML and text | Headings, paragraphs, inline emphasis, lists, links, character references, and supported form controls |
| CSS | Supported selectors, the cascade, custom properties, generated content, colors, borders, and spacing |
| Sizing and layout | Block and inline layout, flexbox, grid, size constraints, text wrapping, and relative or absolute positioning |
| Tables | Column sizing, spanning cells, nested tables, repeated headers, and separate or collapsed borders |
| Images and backgrounds | JPEG, supported PNG formats, self-contained SVG, image fitting, and background sizing and repetition |
| Pages | Page sizes and margins, automatic and explicit breaks, running headers and footers, and page numbers |
| Fonts | Bundled DejaVu Sans, registered TrueType fonts, optional system-font discovery, and glyph fallback |
Supported controls create interactive AcroForm fields by default; use
forms: :static for artwork only. See PDF forms.
This subset does not include JavaScript or full browser layout and typography. See Known limits
before adapting a browser template. The renderer reports unsupported HTML and
CSS through the diagnostic contract.
Visual parity
We compare rendered documents with Chromium at 72 DPI. Every fixture enforces a ceiling of 3% differing pixels or less. A pixel differs when at least one RGB channel differs by more than 12 out of 255. Each fixture also checks the page count and its existing average channel-delta limit.
The comparison uses the installed fonts without forced font aliases. The quality-matrix image installs DejaVu and Liberation fonts. Results vary with the operating system, installed fonts, and browser version; the threshold applies to the tested fixtures, not every document or environment.
These percentages describe visual comparisons, not a percentage of browser features supported. Start with the rendering examples for working templates.
The current suite also covers all supported PNG color types and sample depths,
including Adam7 interlacing, in the png_formats fixture. The historical table
below is not an exhaustive list of current fixtures.
Measured comparisons
These historical measurements used forced font aliases to align native and Chromium font selection. They do not represent the current default-font setup.
The table records the maximum changed-pixel ratio and maximum average channel
delta across each fixture's pages, before and after the rendering corrections.
Measurements used Chromium 152.0.7977.82 and Poppler 26.08.0. Values are fractions,
rounded to six decimal places. Average deltas use channel differences divided
by 255. Page counts match Chromium in both runs. Chromium and Poppler versions
can change rasterization, so the tests remain the source of truth for a local
build. Each comparison writes its measurements to
tmp/browser_parity/<fixture>/stats.exs.
| Fixture | Before changed | After changed | Before average | After average | Pages |
|---|---|---|---|---|---|
absolute_positioning | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
background_images | 0.005026 | 0.005026 | 0.000924 | 0.000923 | 1 |
block_box_model | 0.013326 | 0.003759 | 0.006966 | 0.001071 | 1 |
border_style_variants | 0.040866 | 0.013835 | 0.015812 | 0.005687 | 1 |
box_sizing_and_margins | 0.048978 | 0.004186 | 0.014912 | 0.002189 | 1 |
break_variants | 0.014273 | 0.005261 | 0.008917 | 0.003360 | 4 |
cmyk_jpeg_colors | 0.225000 | 0.000000 | 0.024118 | 0.000000 | 1 |
computed_custom_properties | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
css_cascade_selectors | 0.025316 | 0.009598 | 0.006620 | 0.002997 | 1 |
css_remaining_supported_values | 0.047344 | 0.004182 | 0.013802 | 0.001858 | 1 |
display_lists_and_inline_block | 0.020615 | 0.008614 | 0.009093 | 0.003884 | 1 |
distributed_gaps | 0.008247 | 0.008247 | 0.005498 | 0.005498 | 1 |
empty_flex_height | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
flex_direction_and_justification | 0.039538 | 0.013691 | 0.017569 | 0.007099 | 1 |
flex_grid_alignment | 0.022682 | 0.004863 | 0.009078 | 0.002474 | 1 |
fonts_and_print_media | 0.010392 | 0.004778 | 0.003419 | 0.001776 | 1 |
generated_content_counters | 0.021549 | 0.006030 | 0.007696 | 0.001746 | 1 |
government_application_form | 0.033214 | 0.019625 | 0.011544 | 0.006463 | 1 |
grid_explicit_sizes | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
grid_span_end | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
grid_sparse_placement | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
grid_tracks_and_placement | 0.019325 | 0.004126 | 0.009635 | 0.002252 | 1 |
hidden_tables | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
html_semantics_typography | 0.047726 | 0.009228 | 0.023937 | 0.005865 | 1 |
image_object_fitting | 0.005234 | 0.002049 | 0.002474 | 0.000532 | 1 |
images_data_uris | 0.026862 | 0.006088 | 0.013614 | 0.003376 | 1 |
inline_positioning | 0.000699 | 0.000157 | 0.000139 | 0.000036 | 1 |
inline_text_flow | 0.010324 | 0.007043 | 0.003267 | 0.002320 | 1 |
invoice_012 | 0.044961 | 0.003449 | 0.012295 | 0.001212 | 1 |
layout_compositions_remaining | 0.045748 | 0.018748 | 0.024946 | 0.009580 | 1 |
links_entities_and_protocols | 0.018426 | 0.005234 | 0.010822 | 0.003469 | 1 |
material_requisition | 0.039841 | 0.012483 | 0.010872 | 0.002522 | 2 |
multi_page_report_012 | 0.027334 | 0.007759 | 0.007918 | 0.002245 | 2 |
nested_table_collapsed_borders | 0.025919 | 0.010732 | 0.014692 | 0.005843 | 1 |
nested_table_grid_flex | 0.023053 | 0.011168 | 0.011224 | 0.005438 | 1 |
page_furniture | 0.006598 | 0.005560 | 0.002504 | 0.002144 | 2 |
page_geometry_asymmetric | 0.002973 | 0.000680 | 0.001405 | 0.000343 | 1 |
page_rules_landscape | 0.000928 | 0.000928 | 0.000536 | 0.000536 | 1 |
pagination_breaks | 0.004403 | 0.000126 | 0.002268 | 0.000020 | 2 |
paragraph_pagination | 0.014722 | 0.000000 | 0.002449 | 0.000000 | 2 |
png_transparent_color | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
purchase_order | 0.044869 | 0.014795 | 0.013453 | 0.003071 | 1 |
quoted_at_rules | 0.003071 | 0.000710 | 0.000562 | 0.000135 | 1 |
quoted_variables | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 1 |
root_absolute_pagination | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 2 |
statement_012 | 0.033536 | 0.012086 | 0.011265 | 0.002704 | 1 |
static_form_controls | 0.009466 | 0.008300 | 0.003197 | 0.003086 | 1 |
stock_sticker | 0.044596 | 0.002616 | 0.007420 | 0.000380 | 1 |
system_font_inheritance | 0.013080 | 0.010256 | 0.003986 | 0.003182 | 1 |
table_collapsed_borders | 0.032956 | 0.010788 | 0.016993 | 0.004559 | 1 |
table_column_layout | 0.042236 | 0.003707 | 0.024260 | 0.001972 | 1 |
table_header_near_page_row | 0.035185 | 0.006620 | 0.015151 | 0.004810 | 2 |
table_pagination_headers | 0.015746 | 0.001754 | 0.008630 | 0.001063 | 2 |
table_rowspan_tfoot | 0.022139 | 0.006373 | 0.010748 | 0.002237 | 1 |
table_separate_borders | 0.024107 | 0.005216 | 0.014058 | 0.002555 | 1 |
text_style_variants | 0.041601 | 0.010272 | 0.018766 | 0.004529 | 1 |
trim_card | 0.052570 | 0.015661 | 0.018627 | 0.003926 | 1 |
units_and_sizing | 0.032484 | 0.015789 | 0.009215 | 0.003437 | 1 |
unsupported_glyph_replacement | 0.012193 | 0.012026 | 0.006146 | 0.006101 | 1 |
weight_inheritance | 0.045833 | 0.000000 | 0.018333 | 0.000000 | 1 |
whitespace_pre_line | 0.024448 | 0.005610 | 0.008130 | 0.001844 | 1 |
zero_font_size | 0.014896 | 0.000000 | 0.003094 | 0.000000 | 1 |