The VGA font file
filename
has the following format:
Offset:
0 - 31 Character 0
... ...
8164 - 8195 Character 255
Each row of a character bitmap is stored as a byte (8 pixels).
The space that is left from the 32-byte buffer for each character
is ignored, e.g. a 16 line font uses only offsets 0 - 15 of each character.
Linux textmode screen resolutions:
80x25 16 line font 400 scanlines
80x28 14 line font 400 scanlines
80x50 8 line font 400 scanlines
The font sizes and resolutions of extended textmodes depend on the
video card type and BIOS:
132x25 14 line font 350 scanlines (ugly)
132x25 16 line font 400 scanlines
132x43 8 line font 350 scanlines (use fix132x43 to fix/improve)
132x50 8 line font 400 scanlines
Using a font that has less lines per character than the textmode works, but
the characters are smaller. Using a font that is bigger than the textmode
font results in the bottom part of characters being cut off.
The svgalib distribution contains sample fonts with 8, 14 and 16 line characters
in the files
utils/font8 , utils/font14 , and utils/font16 .
The
convfont
(1) program can be used to convert fonts straightforwardly stored
character-after-character (i.e. each character only uses 8/14/whatever
bytes), to the 32-byte per character format that
restorefont
requires.
The purpose of this program is usually to recover from a crashed console due to an
svgalib, Xfree or other program bug. First save the state of the SVGA card when on a
text console. After the crash restore this state. The
savetextmode (1)
and
textmode (1)
script makes this procedure very easy.
The national/fontpak packages, which include kernel patches, allow different
textmode fonts to be used in different virtual consoles. These have been
superseded by the kbd package (in the kernel since ages). See the
setfont (8)
utility of the kbd package as a starting point.
Recent kernels support up to 2 fonts with 512 chars each. Recent versions
of svgalib take this into account and extend the size of the datafile accordingly.