^[control-codes live in libghostty-vt

C0 control characters

FF Form Feed

Move the cursor down one line, exactly as a line feed does.

FF
ECMA-48
§8.3.51 FF – Form Feed, p. 44
DEC STD 070
§5.4.4 Form Feed, p. 5-62
VT510
4.2 Control Characters

On a terminal, FF (0C) is a line feed: the cursor moves down one line in the same column, and the scrolling region scrolls up if the cursor was on the bottom margin. With line feed/new line mode (LNM) set, it also returns to the first column, as a line feed does.

That is not what the standard says. ECMA-48 defines it as a move to the page home position of the next page or form, which is what a printer does with it. A terminal does not clear its screen or start a new page. DEC STD 070 calls a terminal’s FF a “fallback implementation”, there for compatibility with output meant for printers, and recommends that software send a line feed instead. The VT510 manual says only that it is “treated as LF”.

Validation

FF-1: Down, not back

AB
\f
C
|AB___|
|__C__|
|_____|
cursor 2,4

FF-2: Scrolls at the bottom

A\r\nB\r\nC
\f
D
|B____|
|C____|
|_D___|

FF-3: With line feed/new line mode

\e[20h    # LNM
AB
\f
C
\e[20l
|AB___|
|C____|
cursor 2,2
Every example on these pages runs in your browser, in libghostty-vt compiled to WebAssembly.