Bug report: Xterm problems with Greek pi (π) and box-drawing

This post is archived. Opinions expressed herein may no longer represent my current views. Links, images and other media might not work as intended. Information may be out of date. For further questions contact me.

I submitted the following to the Debian bug tracker #931305.


While using proportional fonts, the Greek letter pi (π) is treated as a box-drawing character or, more likely, as missing from the proportional font altogether. This happens only at certain point sizes AND/OR only with specific fonts.

Scenario 1: Greek pi works, but box-drawing does not

With these settings:

xterm.vt100.faceName: DejaVu Sans Mono
xterm.vt100.faceSize: 10
XTerm.vt100.forceBoxChars: false

The greek letter pi is displayed correctly, but the second vertical line (drawn with U+2502) is almost the same as the first one (drawn with U+007C).

image scenario 1

Scenario 2: Greek pi does not work, but box-drawing does

With these settings:

xterm.vt100.faceName: DejaVu Sans Mono
xterm.vt100.faceSize: 10
XTerm.vt100.forceBoxChars: true

The Greek letter pi is drawn using a fixed-size (bitmap) font. The second vertical line is properly displayed using box-drawing characters.

image scenario 2

Scenario 3: faceSize: 9.5 forceBoxChars: false works for both

With these settings:

xterm.vt100.faceName: DejaVu Sans Mono
xterm.vt100.faceSize: 9.5
XTerm.vt100.forceBoxChars: false

Everything appears to work as intended.

image scenario 3

Scenario 4: Fira Code works using settings from scenarios 1 and 3

With these:

xterm.vt100.faceName: Fira Code
xterm.vt100.faceSize: 10
XTerm.vt100.forceBoxChars: false

Or this changed:

xterm.vt100.faceSize: 9.5

Everything seems to work as intended.

image scenario 4

Scenario 5: forceBoxChars always breaks Greek letter pi (π)

With these settings:

xterm.vt100.faceName: Fira Code
xterm.vt100.faceSize: 10
XTerm.vt100.forceBoxChars: true

Regardless of typeface, enabling forceBoxChars will always draw the letter pi in a bitmap font.

image scenario 5