Skip to main content
ansicode

SGR 26 — Proportional spacing (ECMA-48; ignored by every common terminal)

Defined by ECMA-48 as 'proportional spacing on' — but no common terminal emulator implements it. Document the gotcha.

Byte forms

Every common string-literal form so you can paste-and-search either direction.

\\x1b[\x1b[26m
\\033[\033[26m
\\e[\e[26m
ESC [ESC [ 26 m
hex1b 5b 32 36 6d

Description

ECMA-48 §8.3.117 defines SGR 26 as `PROPORTIONAL SPACING` — a hint that the rendering device should switch from fixed-width cells to a proportional font for the following characters; `\x1b[50m` is the matching `PROPORTIONAL SPACING OFF`. **This control is effectively dead**: it was meaningful on the ANSI X3.64 / ECMA-48 print-stream targets of the 1970s–80s (typewriters, daisy-wheel printers, mainframe terminals with optional proportional firmware) but every modern terminal emulator hard-codes a monospaced grid for column math and ignores SGR 26 entirely. It is documented here so that decoders and lint tools recognise the byte sequence rather than misclassifying it — and so writers do not accidentally believe they can mix proportional and monospace text in a terminal session. If you want proportional rendering in 2026, use a non-terminal UI (web, native).

Spec citation: ECMA-48 §8.3.117 (SGR parameter 26)

Examples

bash
printf '\033[26mproportional\033[50m back\033[0m\n'   # silently ignored by xterm/kitty/iterm2/etc.
python
import sys; sys.stdout.write('\x1b[26mproportional\x1b[50m\n')
go
fmt.Print("\x1b[26mproportional\x1b[50m\n")
javascript
process.stdout.write('\x1b[26mproportional\x1b[50m\n')
c
printf("\x1b[26mproportional\x1b[50m\n");

Terminal support

xterm
no
Linux console (fbcon)
no
macOS Terminal.app
no
iTerm2
no
Windows Terminal
no
cmd.exe / ConPTY
no
kitty
no
alacritty
no
WezTerm
no
Ghostty
no
GNOME Terminal
no
Konsole
no
tmux
no
GNU screen
no

Related sequences