Skip to content

VSoft.AnsiConsoleRich console output for Delphi

Tables, trees, live progress, prompts, syntax-coloured exceptions — composable widgets that render through a unified pipeline.

VSoft.AnsiConsole hero screenshot

Standing on the shoulders of giants

VSoft.AnsiConsole is a from-scratch Delphi port that borrows freely - and gratefully - from the projects that pioneered rich console rendering on other platforms. The widget catalogue, render pipeline, markup grammar, and prompt design all closely mirror prior art so existing knowledge transfers directly; the Delphi idioms (interfaces, fluent builders, value-typed records) are native.

Spectre.Console (.NET)

Spectre.Console is the direct ancestor. The widget surface, border styles, segment-based render pipeline, prompt design, status / progress / live-display contracts, and the recorder all follow Spectre's model very closely. Where there's an obvious right answer in Spectre, this library uses it. Spectre's documentation at spectreconsole.net is a fantastic companion read - many of the conceptual sections there apply verbatim.

Rich (Python)

Rich by Will McGugan is the project that pioneered most of these ideas - the segment / renderable model, the markup syntax, the live display pattern. Spectre.Console (and by extension this library) owes Rich an enormous debt. Several README examples and the Markdown widget approach were lifted directly from Rich's walk-through.

Upstream data tables

A handful of mechanical imports power the polish:

  • xterm-256 colour palette - the exact RGB values for indices 0..255.
  • Unicode 15.1 cell-width tables - so wide / combining / zero-width characters measure correctly.
  • cli-spinners - 90 named spinner kinds, courtesy of Sindre Sorhus.
  • FIGlet font data - the Standard font is bundled; the .flf parser follows the FIGlet 2.0 spec.
  • Emoji shortcodes - ~1500 entries generated from the Unicode CLDR short-name list, matching the same shortcode set you've seen on GitHub, Slack, Discord, and Spectre.

Each generated unit carries an attribution comment at the top citing the upstream source.

Why a Delphi port?

Delphi doesn't have a first-class equivalent to Spectre or Rich. Building a CLI tool that needs colour, tables, prompts, or live displays usually means reaching for Crt, custom escape-code helpers, or shelling out to PowerShell. This library exists so a Delphi developer can uses VSoft.AnsiConsole; and get the same polish as their .NET / Python counterparts - without porting half the toolchain.

Released under the MIT License.