This script provides a simple way to render text with ANSI escape sequences. Package ansi-render provides a function ansi-render, and a dictionary of themes terminal-themes.
#import "@preview/ansi-render:0.9.2": *
#ansi-render(
string,
font: string or none,
size: length,
width: auto or relative length,
height: auto or relative length,
breakable: boolean,
radius: relative length or dictionary,
inset: relative length or dictionary,
outset: relative length or dictionary,
spacing: relative length or fraction,
above: relative length or fraction,
below: relative length or fraction,
clip: boolean,
bold-is-bright: boolean,
theme: terminal-themes.theme,
)
string - string with ANSI escape sequencesfont - font name or none, default is Cascadia Code, set to none to use the same font as rawsize - font size, default is 1embold-is-bright - boolean, whether bold text is rendered with bright colors, default is falsetheme - theme, default is vscode-lightblock function with the same default value, only affects outmost block layout:
widthheightbreakableradiusinsetoutsetspacingabovebelowclipsee themes
#ansi-render(
"\u{1b}[38;2;255;0;0mThis text is red.\u{1b}[0m
\u{1b}[48;2;0;255;0mThis background is green.\u{1b}[0m
\u{1b}[38;2;255;255;255m\u{1b}[48;2;0;0;255mThis text is white on a blue background.\u{1b}[0m
\u{1b}[1mThis text is bold.\u{1b}[0m
\u{1b}[4mThis text is underlined.\u{1b}[0m
\u{1b}[38;2;255;165;0m\u{1b}[48;2;255;255;0mThis text is orange on a yellow background.\u{1b}[0m",
inset: 5pt, radius: 3pt,
theme: terminal-themes.vscode
)

#ansi-render(
"\u{1b}[38;5;196mRed text\u{1b}[0m
\u{1b}[48;5;27mBlue background\u{1b}[0m
\u{1b}[38;5;226;48;5;18mYellow text on blue background\u{1b}[0m
\u{1b}[7mInverted text\u{1b}[0m
\u{1b}[38;5;208;48;5;237mOrange text on gray background\u{1b}[0m
\u{1b}[38;5;39;48;5;208mBlue text on orange background\u{1b}[0m
\u{1b}[38;5;255;48;5;0mWhite text on black background\u{1b}[0m",
inset: 5pt, radius: 3pt,
theme: terminal-themes.vscode
)

#ansi-render(
"\u{1b}[31;1mHello \u{1b}[7mWorld\u{1b}[0m
\u{1b}[53;4;36mOver and \u{1b}[35m Under!
\u{1b}[7;90mreverse\u{1b}[101m and \u{1b}[94;27mreverse",
inset: 5pt, radius: 3pt,
theme: terminal-themes.vscode
)

// uses the font that supports ligatures
#ansi-render(read("./test/test.txt"), inset: 5pt, radius: 3pt, font: "Cascadia Code", theme: terminal-themes.putty)

The most straight forward way is writing to a file then read that in Typst.
command > out.txt
If writing to a file doesn't work, that means the program will detect the output and trim ANSI sequence accordingly, which means we need a pty interface to execute the script, the following should work in Linux:
script "command" out.txt
exit
Typst's default font for raw is Dejavu Sans Mono, but it has incorrect top-edge, so the default is set to Cascadia Code, which is included in web editor.
Typst
95.5%
PowerShell
4.5%
This script provides a simple way to render text with ANSI escape sequences. Package ansi-render provides a function ansi-render, and a dictionary of themes terminal-themes.
#import "@preview/ansi-render:0.9.2": *
#ansi-render(
string,
font: string or none,
size: length,
width: auto or relative length,
height: auto or relative length,
breakable: boolean,
radius: relative length or dictionary,
inset: relative length or dictionary,
outset: relative length or dictionary,
spacing: relative length or fraction,
above: relative length or fraction,
below: relative length or fraction,
clip: boolean,
bold-is-bright: boolean,
theme: terminal-themes.theme,
)
string - string with ANSI escape sequencesfont - font name or none, default is Cascadia Code, set to none to use the same font as rawsize - font size, default is 1embold-is-bright - boolean, whether bold text is rendered with bright colors, default is falsetheme - theme, default is vscode-lightblock function with the same default value, only affects outmost block layout:
widthheightbreakableradiusinsetoutsetspacingabovebelowclipsee themes
#ansi-render(
"\u{1b}[38;2;255;0;0mThis text is red.\u{1b}[0m
\u{1b}[48;2;0;255;0mThis background is green.\u{1b}[0m
\u{1b}[38;2;255;255;255m\u{1b}[48;2;0;0;255mThis text is white on a blue background.\u{1b}[0m
\u{1b}[1mThis text is bold.\u{1b}[0m
\u{1b}[4mThis text is underlined.\u{1b}[0m
\u{1b}[38;2;255;165;0m\u{1b}[48;2;255;255;0mThis text is orange on a yellow background.\u{1b}[0m",
inset: 5pt, radius: 3pt,
theme: terminal-themes.vscode
)

#ansi-render(
"\u{1b}[38;5;196mRed text\u{1b}[0m
\u{1b}[48;5;27mBlue background\u{1b}[0m
\u{1b}[38;5;226;48;5;18mYellow text on blue background\u{1b}[0m
\u{1b}[7mInverted text\u{1b}[0m
\u{1b}[38;5;208;48;5;237mOrange text on gray background\u{1b}[0m
\u{1b}[38;5;39;48;5;208mBlue text on orange background\u{1b}[0m
\u{1b}[38;5;255;48;5;0mWhite text on black background\u{1b}[0m",
inset: 5pt, radius: 3pt,
theme: terminal-themes.vscode
)

#ansi-render(
"\u{1b}[31;1mHello \u{1b}[7mWorld\u{1b}[0m
\u{1b}[53;4;36mOver and \u{1b}[35m Under!
\u{1b}[7;90mreverse\u{1b}[101m and \u{1b}[94;27mreverse",
inset: 5pt, radius: 3pt,
theme: terminal-themes.vscode
)

// uses the font that supports ligatures
#ansi-render(read("./test/test.txt"), inset: 5pt, radius: 3pt, font: "Cascadia Code", theme: terminal-themes.putty)

The most straight forward way is writing to a file then read that in Typst.
command > out.txt
If writing to a file doesn't work, that means the program will detect the output and trim ANSI sequence accordingly, which means we need a pty interface to execute the script, the following should work in Linux:
script "command" out.txt
exit
Typst's default font for raw is Dejavu Sans Mono, but it has incorrect top-edge, so the default is set to Cascadia Code, which is included in web editor.
Typst
95.5%
PowerShell
4.5%