If you look closely, you’ll see that even kerning has been implemented – making italics much nicer.
The main use I see for this is not so much about going overboard with all sort of “roman”, “italic”, or “bold” mixes (although now you can), but to mix different font sizes on the same screen (large values, small labels, etc).
Here’s the new font_demo.pde sketch which produces the above display:
That’s just 7 of the 250+ fonts and variations now present in the GLCD library :)
To use a font, include the proper header in your sketch, and call glcd.setFont() to activate it. The thing to keep in mind is that fonts use up flash memory space. I’ve come up with a fairly compact way to store them, but larger fonts obviously need more memory than tiny ones, especially if they include all ASCII character codes. Also, proportional fonts need more space than mono-spaced fonts, due to extra per-character width / offset info.
Here is an overview of the amount of memory needed for each font, sorted by size:
246 micro 294 4x6 294 clR4x6 366 clR5x6 426 5x7 438 clR6x6 486 5x8 486 clR5x8 582 clR6x8 606 clR5x10 ... 7099 helvBO24 7165 charB24 7240 ncenI24 7376 lubB24 7478 lubI24 7529 charBI24 7595 ncenBI24 7762 luBS24 8148 lubBI24 8627 luBIS24
The above sketch compiles to 12572 bytes, of which about 8 Kb are fonts.
One last note: these changes mean that you now always have to set up some font before calling drawChar() or drawString(), there is no default (it might not be the one you want, or you might not need any fonts at all).