³E!FONT - EGA/VGA font loader³
(c) Patrick Philippot - 1988,89,90
E!FONT is a simple, universal and non resident font loader. It
will replace default BIOS fonts on your EGA / VGA display. These
new fonts are contained in a font file. The font file structure is
Four 25 lines font files are distributed with E!. E!FNT251.EGA,
E!FNT252.EGA, E!FNT251.VGA and E!FNT252.VGA. You may use this program
to load fonts you already own. You may also use these font files with
other font loaders.
Enter the following command at the DOS prompt :
E!FONT without argument.
In the last case, the default ROM BIOS font will be reloaded.
When you load a font the screen is not cleared and the displayed
data will be displayed with the new font.
Since E!FONT is not resident you may use it from the E! command
line. You may also assign the E!FONT command to a key within E!. See
E! documentation on the DEFINE command.
Define 357 [email protected]!font e!fnt251.ega ** Ctrl F8
Define 358 [email protected]!font e!fnt252.ega ** Ctrl F9
Define 359 [email protected]!font ** Ctrl F10
The above lines in your active profile will reconfigure E! as
follows (it is assumed E!FONT is in a "reachable" path):
Ctrl F8 will load the e!fnt251.ega font.
Ctrl F9 will load the e!fnt252.ega font.
Ctrl F10 will load the ROM BIOS default font.
All this will happen without any change to the screen (blind DOS
command - "@") except the characters will be displayed with the new
(see profiles and DEFINE command in E! documentation).
³FONT FILES STRUCTURE³
Font files structure is very easy to understand. A font file is
made up of 256 bit maps, each one representing a character from the
IBM extended character set.
Each matrix contains n lines, each line corresponding to a
byte. Each bit of this byte represents a pixel on the screen. If
the bit is set to one, the pixel is displayed. So, a character is
always 8 pixels wide.
The first 14 bytes of E!FNT251.EGA are all set to zero : they
represent the null character. Nothing is displayed. Here are the 14
next bytes representing the ascii character 1 (Ctrl A) :
byte number value matrix
byte 14 00h . . . . . . . .
byte 15 3Ch . . Û Û Û Û . .
byte 16 42h . Û . . . . Û .
byte 17 81h Û . . . . . . Û
byte 18 A5h Û . Û . . Û . Û
byte 19 81h Û . . . . . . Û
byte 20 C3h Û Û . . . . Û Û
byte 21 A5h Û . Û . . Û . Û
byte 22 99h Û . . Û Û . . Û
byte 23 42h . Û . . . . Û .
byte 24 3Ch . . Û Û Û Û . .
byte 25 00h . . . . . . . .
byte 26 00h . . . . . . . .
byte 27 00h . . . . . . . .
The font file contains no header and no other information.
Hence, its size will always be a multiple of 256. The first byte in a
matrix represents the first (top) scan line of the displayed
The user is responsible for specifying the number of 8 pixels
lines constituing a character. For example the default ROM BIOS EGA
font is made up of characters containing 14 lines of 8 pixels. The
font file size will be : 256 x 14 = 3584 bytes. In the EGA 43 lines
mode the matrix is 8 x 8 pixels. The special 35 lines mode
implemented by E! uses a 10 x 8 matrix. You do not have to explicitly
load the 35 lines font : E! will do it for you when you press Ctrl G
(if the 35LINES command has been set to YES in your active profile).
A non 25 lines mode font will not be taken into account by DOS
(unless you installed DOS 4.0). E! will only process 25, 43, 50 and
35 lines fonts.
When you load a font, E!FONT will automatically calculate how
many lines are displayed for each character. E!FONT will refuse to
load a font file if its size is not a multiple of 256. If you load
a file which is not a font file, results will be VERY surprising.
If you want to modify the fonts delivered with E! or if you
are courageous enough to design a new font from scratch, use the