I've been building an HTML/CSS rendering engine in Free Pascal called Pixie. It has its own HTML5 parser, CSS3 tokeniser/parser, and a layout engine that handles block, inline, float, table, flexbox, and CSS grid.
I'm considering open-sourcing it and wanted to see if there's interest in the community first.
What it doesPixie takes an HTML string and renders it into a Lazarus control (
TPixieHtmlView) with full mouse interaction, scrolling, links, hover/active states, and form controls. Think of it as a way to use HTML/CSS for rich content display in native desktop apps — without embedding a browser.
Features- HTML5 parser (68 tokeniser states, 23 insertion modes) — handles malformed HTML the same way browsers do
- CSS3 parser following the W3C CSS Syntax Level 3 spec
- Layout: block, inline, float, table (colspan/rowspan), flexbox, CSS grid
- Selectors: type, class, ID, attribute, combinators, :nth-child(), :not(), :is(), :hover, :active, ::before/::after
- Gradients: linear-gradient(), radial-gradient(), conic-gradient() with repeating variants
- Media queries (Level 4), custom properties (var()), border-radius, opacity, positioned elements
- Owner-drawn form controls: text inputs, textareas, checkboxes, radio buttons, buttons — with caret, selection, and clipboard
Architecture — no dependenciesPixie is pure Pascal with zero third-party dependencies. The rendering backend is abstracted behind a canvas interface with three implementations:
- Direct2D / DirectWrite (Windows) — hardware-accelerated, native SVG via ID2D1DeviceContext5
- Cairo (Linux / cross-platform)
- Core Graphics (macOS)
~49,000 lines of Pascal across 58 units. A full demo app compiles to a
4.2 MB stripped executable (Win64, smart-linked). No DLLs, no runtime, no WebView2 redistributable.
Use cases for Lazarus apps- Rich "about" dialogs, changelogs, and release notes
- In-app help systems and documentation viewers
- HTML-formatted reports and print previews
- Email or message display
- Dashboard panels with styled content and tables
- Any UI where you want the flexibility of HTML/CSS without the weight of an embedded browser
Current stateThe engine is used in production in our commercial products. It handles real-world HTML well, though it's not trying to be a full browser — no JavaScript, no
<video>, no CSS animations. The focus is on correct layout and rendering of static/interactive content.
Compiles with Lazarus/FPC targeting Windows (32/64), Linux (x64, ARM64), and macOS (x64, ARM64).
Would there be interest in seeing this released as open source? Curious to hear thoughts, questions, or what features would matter most to you.