Und eine Schriftart, die als Array gespeichert ist. Die ist aber nich im SRAM. Hoffe ich.
Wenn Du einfach ein Array definiert hast, z.B.

char array[256] = {1, 2, 3, ....};

dann liegt das sowohl im Flash als auch im SRAM! Das ist sinnvoll, wenn Du dieses Array zur Laufzeit ändern willst. Wenn Du aber nur die Werte ausliest und nicht änderst, ist das eine grandiose Verschwendung von SRAM.

Du kannst den Compiler anweisen, ein Array (wie jede andere Variable) nicht ins SRAM zu kopieren, sondern nur im Flash (oder im EEPROM) abzulegen.
Variablen im Flash werden so definiert:

char array[5] PROGMEM = {1, 2, 3, 4, 5};

Damit das funktioniert, brauchst Du

#include <avr/pgmspace.h>

Allerdings kannst Du auf Variablen im Flash nicht transparent zugreifen. Du mußt sie vor Gebrauch in das SRAM umkopieren. Trotzdem spart man viel SRAM, denn Du must von einem großen Array meist nur ein einzelnes Element im SRAM haben und nicht das ganze Array, z.B. 100 Elemente. Der Zugriff auf Variablen im Flash erfolgt mit den Funktionen pgm_read_byte, pgm_read_word, memcpy_P und viele andere. Für weitere Infos lies mal das
Tutorial von mikrocontroller.net, da stehen nähere Infos dazu drin. Ansonsten schau Dir mal das "avr libc user manual" bezüglich avr/pgmspace.h an, das findest Du (wenn Du WinAVR installiert hast) im Startmenü unter WinAVR.

Servus
Technikus

Edit: Link repariert