That terminal is called the Linux console, or sometimes a “vt” (short for virtual terminal). The terminology can be confusing, especially since it's used inconsistently and sometimes incorrectly. You can find more information on terminology by reading What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'?.
The Linux console supports user-configured fonts, so the answer to your question is “whatever the user set up”. The utility to change the font is consolechars
, part of the Linux console tools. Only 8-bit fonts are supported by the hardware, though you can partly work around this by supporting unicode-encoded output but only having 256 glyphs (other characters are ignored). Read the lct documentation (online as of this writing, it should be included in your distribution's package) for more information.
If you use the Linux framebuffer, you can have proper unicode support, either directly or through fbterm.
The half-block characters are included in IBM code page 437, which is supported in ROM most PC video adapters. Depending on what characters you need, this may be enough.
Note that very few people use the Linux console these days. Some people cannot use it for various reasons (not running Linux, running on a remote X terminal, having a video adapter where text mode is buggy, …). I don't recommend spending much energy on supporting it.
Urxvt has an option for basic kerning: letterSpace
. See man urxvt
:
-letsp number
Compile frills: Amount to adjust the computed character width by to control overall letter spacing. Negative
values will tighten up the letter spacing, positive values will space letters out more. Useful to work around
odd font metrics; resource letterSpace.
So you can adjust the spacing by adding a line to your ~/.Xresources
, like so:
URxvt.letterSpace: -1
Note: it is difficult to tell from your first screenshot, but it looks like Urxvt is falling back to the default font as it can't find or load Terminus, hence the wide spacing. Terminus is a bitmap font (which is likely disabled by default), so you should use xfontsel
to copy the correct font string into your definition.
See the Arch Wiki page on X Logical Font Description for a detailed description of how this system works.
Best Answer
Using fontconfig,
e.g.
will display any font filenames containing ✓ and ✗.
To get the codepoint corresponding to the character use (for example)
This uses a somewhat obscure feature of the POSIX
printf
utility:Taken together,
This uses the
xargs
-I
flag to replace{}
with names fromstdin
. So this effectively boils down to: