Why did visual terminal VT100 need a fixed-width font? There were visual limits: 24 x 80 characters. But still why not use variable-width characters?

For instance, in PuTTY documentation in paragraph 4.8.2 it is said that variable-width font characters are redrawn so that they fit one fixed-width font character.

1 Answer 1


VT100s predate (1976) any use of variable-pitch fonts in terminals. That is incidental. There is more than one reason for using fixed-pitch fonts in terminals, but the main one is that cursor-addressing assumes a fixed-pitch layout of characters (a grid of rows/columns).

With proportional fonts, the characters are different widths, and do not fit into a regular grid (letter "i" is narrower than "M" or "W" for example).

Proportional fonts in terminals did not show up until the 1980s, and then rarely as in 9term. With those, you cannot use programs such as vi (or vim), but instead editors such as sam.

PuTTY's documentation says, in 4.8.2:

By default, you will be offered a choice from all the fixed-width fonts installed on the system, since VT100-style terminal handling expects a fixed-width font. If you tick the box marked ‘Allow selection of variable-pitch fonts’, however, PuTTY will offer variable-width fonts as well: if you select one of these, the font will be coerced into fixed-size character cells, which will probably not look very good (but can work OK with some fonts).

Whether the font is scalable or not, individual glyphs are not, without a lot of work. The result will show either lots of empty space, or characters which overwrite their neighbors when displayed on a fixed-pitch grid.

Initially xterm did not allow proportional fonts but (in 1998, before PuTTY) it was modified to permit this with the caveat that the result would not be good. The font tells the minimum and maximum size of characters without any hint where the majority of characters lie on that range. xterm's forcePackedFont resource allow you to choose, which extreme to use.

  • 3
    Video memory in the original hardware terminals was not an array of pixels but an array of characters. You could write the code for, say, a on a given location, and the corresponding character appeared on the screen. There was no concept of "font", the characters were simply drawn by the hardware. Of course, for this approach to make sense all characters had to have the same width. On a side note, this model was emulated and kept alive for many years PC BIOS. Many programs from the MS-DOS era took advantage of it. Commented Sep 7, 2016 at 9:57
  • Quite a few programs assume fixed-width. Most ncurses applications would look horrible with variable-width chars. As well as logs and command output would not line up as nicely. Commented Sep 7, 2016 at 11:03
  • @SatoKatsura, according to you there was a set of characters where every character width was the same constant value. Why wouldn't hardware draw a character of width, say, equal to the doubled constant value? So character A would take one place, and character W would take two places.
    – osiv
    Commented Sep 8, 2016 at 7:08
  • Proportional fonts refer to finer gradations than doubling the size of characters. VT100s provided a mode which could double the width of all characters, not much used now. Commented Sep 8, 2016 at 7:53
  • Reference (for the vt220): vt100.net/dec/vt220/glyphs
    – Kusalananda
    Commented Feb 1, 2017 at 8:14

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .