Commit Graph
72 Commits
Author SHA1 Message Date
SGavrl cfac7f2003 Rasterize direct gradients at native scale 2026-08-03 20:20:52 +00:00
SGavrl c8a5477296 Improve modern rendering and output parity 2026-08-03 19:46:24 +00:00
SGavrl 51a3eb1a81 Prepare fast document-space captures 2026-08-03 16:33:47 +00:00
SGavrl ceb6fa52ca Implement background box geometry 2026-08-03 16:18:16 +00:00
SGavrl 478f888a6b Implement renderer-backed nested scrolling 2026-08-03 15:58:33 +00:00
SGavrl 642b6b57b5 Implement inline box continuation geometry 2026-08-03 15:01:16 +00:00
SGavrl 33923da61e Honor standard image source selection 2026-08-03 14:07:25 +00:00
SGavrl e6ec5dca59 Implement affine transform geometry 2026-08-03 14:01:28 +00:00
SGavrl 26a78a91c8 Implement CSS text truncation 2026-08-03 13:29:16 +00:00
SGavrl d7befd7c41 Implement complete CSS border geometry 2026-08-03 12:55:48 +00:00
SGavrl d5857fc889 Match grid replaced sizing semantics 2026-08-03 12:35:09 +00:00
SGavrl 71193faddf Match CSS text breaking semantics 2026-08-03 11:32:45 +00:00
SGavrl 3e377cef67 Match inline font fragment geometry 2026-07-31 10:02:59 +00:00
SGavrl 61d61feb50 Fix ordinary inline used sizing 2026-07-31 09:30:58 +00:00
SGavrl c69fafae21 Fix modern stylesheet and image geometry 2026-07-31 08:59:43 +00:00
SGavrl 5f67bad4fe Expose live computed CSS variables to scripts 2026-07-31 08:26:08 +00:00
SGavrl 52e973afc9 Close modern layout and image geometry gaps 2026-07-31 07:51:51 +00:00
SGavrl af5ae70d31 Expand modern CSS layout and paint parity 2026-07-31 06:47:51 +00:00
SGavrl 5c34e74f10 Connect document font faces to rendering 2026-07-31 03:31:21 +00:00
SGavrl 53c0e64cfe Preserve authored alpha in shaped text 2026-07-31 03:04:10 +00:00
SGavrl 1fc18bd1ad Paint polygon clip paths 2026-07-31 02:46:58 +00:00
SGavrl c216e29ac5 Keep scrolling clips in capture coordinates 2026-07-31 02:33:45 +00:00
SGavrl 157d2bfaed Resolve percentage border radii at paint time 2026-07-31 02:20:04 +00:00
SGavrl bbef97dbb8 Sample radial gradients through masks 2026-07-31 02:06:59 +00:00
SGavrl bae1259afe Track responsive image candidates in lifecycle 2026-07-31 01:55:25 +00:00
SGavrl c5210b1684 Connect image elements to render resources 2026-07-31 01:32:19 +00:00
SGavrl fd746c13e9 Shape inherited letter spacing 2026-07-30 22:36:28 +00:00
SGavrl 4eecbe870e Prepare reusable resource-aware renders 2026-07-30 21:56:07 +00:00
SGavrl 1434c2072d Keep scroll paint state immutable 2026-07-30 21:40:36 +00:00
SGavrl 661212e6aa Fix framework layout and image transforms 2026-07-30 20:58:05 +00:00
SGavrl 277753d31d Support responsive images and atomic multicol 2026-07-30 20:38:33 +00:00
SGavrl 10b8492116 Improve modern layout and viewport rendering 2026-07-30 20:24:57 +00:00
SGavrl 35c54936d5 render: size and paint native selects 2026-07-26 22:11:39 +00:00
SGavrl 792a51ba81 render: use resolved SVG viewports 2026-07-26 21:58:57 +00:00
SGavrl 237ba35639 render: shape atomic generated controls 2026-07-26 21:51:34 +00:00
SGavrl 9ec43134ae render: honor generated controls and border resets 2026-07-26 21:31:05 +00:00
SGavrl 1b313ecb49 render: retain authored webfont identity 2026-07-26 20:58:28 +00:00
SGavrl 20be62bca9 render: preserve numeric font weights 2026-07-26 20:48:24 +00:00
SGavrl 37f6c93af9 render: paint generated boxes with contextual backgrounds 2026-07-26 19:48:59 +00:00
SGavrl eea960dd32 render: honor text and background intrinsic metrics 2026-07-26 16:04:55 +00:00
SGavrl 1dc4bf1b63 render: resolve document-level SVG symbols 2026-07-26 15:52:32 +00:00
SGavrl 058e3e98a0 render: load preloaded web fonts 2026-07-26 15:46:40 +00:00
SGavrl d9f9202737 render: resolve modern responsive geometry 2026-07-26 13:47:09 +00:00
SGavrl 6eafb7d6cc render: size and color inline SVG from CSS 2026-07-26 12:18:07 +00:00
SGavrl 3618549842 render: unify responsive geometry and inline gradients 2026-07-26 11:51:44 +00:00
SGavrl 7618b3276a render: preserve framework inline SVG markup 2026-07-26 11:07:51 +00:00
SGavrl 9471591c6c render: preserve responsive image grid geometry 2026-07-23 14:48:27 +00:00
SGavrl 22f33e4dec render: z-index paint layers and clear ending float zones
Paint order was pure tree order, so a dropdown/overlay declared before a
later sibling lost to it and a z:-1 decorative backdrop covered its own
content. A positioned element with a non-zero z-index now lifts its
whole subtree into a separate paint layer: negative layers under the
normal flow, positive above it, each sorted ascending with tree order
preserved within equal z. Nested z roots paint inside their ancestor
root's subtree in tree order, the pragmatic core of CSS stacking
contexts.

clear (left/right/both, previously unparsed) now ends the float zone,
so a clearfix element drops below the float at full width instead of
joining the flow column beside it.

Repro-verified: an earlier z:10 overlay paints over a later sibling, a
later z:-1 backdrop paints under earlier content, and the clear repro
matches Chromium within 3px on every measure. Spot set unchanged or
slightly improved; obstacle course 33/33.
2026-07-16 13:10:28 +00:00
SGavrl 1d96c316ca render: clip image rasters to their visible bound, browser-like alt fallback
paint_image clipped an object-fit:cover overflow to the element box but
ignored the ancestor overflow:hidden clip entirely, so a partially
visible image (a half-scrolled carousel slide, a hero cropped by its
section) painted its full raster past the viewport edge. Pass the
already clip-intersected visible rect down and mask against it whenever
the destination exceeds it on any side.

Broken images now fall back the way browsers do: a non-empty alt renders
as text in place of the image with no placeholder box, alt="" renders
nothing (declared decorative), and only a missing alt keeps the neutral
grey placeholder.

Verified with a repro covering the half-clipped cover slide and all
three alt variants; no movement on the image-heavy spot set; obstacle
course 33/33.
2026-07-16 12:23:17 +00:00
SGavrl c29c64fc57 render: scale image intrinsic size by the selected srcset density
The srcset picker already normalized every candidate to a pixel density
(x descriptor, or w / source-size) to choose one, then threw the density
away, so layout sized the image from the file's raw pixels. Every 2x
responsive asset occupied twice its design size.

Return the picked candidate's density alongside its URL (img srcset,
data-srcset, and picture source paths alike) and divide the fetched
intrinsic dimensions by it, so layout sees CSS px.

Verified: srcset "x.png 2x" of a 648px file lays out at 324 CSS px and
"648w" with sizes=300px at 300, while a bare src stays at raw size; no
regressions on the image-heavy spot set (a bbc delta traced to homepage
content drift against a days-old baseline, 8.0 vs 7.8 percent when
recaptured same-time); obstacle course 33/33.
2026-07-16 12:08:19 +00:00