Manual
26
6.4.3 A Sample Font File
Let's look at a short sample font file containing only the letters "h", "i" and "j". First we need to define the
font size. For this example we'll use a 5 x 7 pixel font. Next, we have to draw the bitmaps for each of the
characters. We'll use the examples shown in Figure 6-1.
Figure 6-1 Bitmaps for h, i and j
Now the bitmaps have to be converted to bytes. If the font is 8 bits high, this is a pretty simple job because
each vertical column is simply one byte (lsb at the top). In this case, however, the font is only 7 bits high so
the bytes "wrap around" as shown in Figure 6-2.
1
2
4
8
1
2
4
8
lsb
byt e 1
byte 2
byte 3
byt e 4
byte 5
byte 5 overflow (ignored)
7F
04
81
80
07
Bytes "straightened out"
Figure 6-2 Bytes for a 7 bit high font
We've marked in the bits that are set for the letter "h". Remember that the bytes are "inverted", i.e. the LSB
is at the top. Each byte is shown in a different colour in the diagram. When the bytes are straightened out,
it's simple enough to find their hex values, which are shown in the diagram above each byte. Trailing zero
bytes at the end of narrow characters are not included in the file.
Now let's look at the file itself.
Example Font File (27 bytes)
0xFF 0xFF 0x05 0x07 0x68 0x6A 0x00 0x0F
0x05 0x00 0x14 0x03 0x00 0x17 0x04 0x7F
0x04 0x81 0x80 0x07 0xC4 0x3E 0x10 0x02
0x20 0xB1 0x07
The colours refer to: Font information header, character 'h', character 'i', character 'j'.
Explanation of the bytes in the file:
(All values below are in hex)
FF FF placeholders for actual EOF
05 font width
07 font height
68 first ASCII character defined