eigene Byte-Schriftart

28/10/2008 - 17:16 von André Hentschel | Report spam
Hallo,
ich möchte eine Schriftart definieren die 8 Pixel hoch ist, deshalb
bietet sich da natürlich ein Byte an.
Das ganze soll die Schriftart für eine LED-Anzeige Marke eigenbau
sein. Nun sind natürlich verschiedene Buchstaben verschieden
breit(vergl. z.B. W und i). Wie kann ich eurer Meinung nach das ganze
optimal speichern.
Das ganze befindet sich zudem auf einem Atmel-Controller, also bin ich
begrenzt in Rechenleistung, Speicher und Ram. Ich dachte ich schreibe
die Schriftart vielleicht ins EEProm rein, da hab ich 512 Byte platz.
Nur wie mach ich das am effizientesten??? Soll ich sie alle einzeln
addressieren? oder vor jeden Buchstaben schreiben aus wievielen Bytes
er besteht? Gibts vielleicht einen Trick mit hilfe von Zeigern?
Wenn da jemand einen Ansatz hàtte wàre ich echt dankbar!!!
 

Lesen sie die antworten

#1 Alexander Bartolich
28/10/2008 - 18:29 | Warnen spam
André Hentschel schrieb:
[...]
ich möchte eine Schriftart definieren die 8 Pixel hoch ist, deshalb
bietet sich da natürlich ein Byte an.
Das ganze soll die Schriftart für eine LED-Anzeige Marke eigenbau
sein. Nun sind natürlich verschiedene Buchstaben verschieden
breit(vergl. z.B. W und i). Wie kann ich eurer Meinung nach das ganze
optimal speichern.
Das ganze befindet sich zudem auf einem Atmel-Controller, also bin ich
begrenzt in Rechenleistung, Speicher und Ram. Ich dachte ich schreibe
die Schriftart vielleicht ins EEProm rein, da hab ich 512 Byte platz.



26 Kleinbuchstaben + 26 Großbuchstaben + 10 Ziffern = 62
+ zwei Sonderzeichen = 64

64 Zeiger zu 16-bit belegen 128 Byte, das sind 25 Prozent des zur
Verfügung stehenden Speichers. Die Idee kannst du knicken.

Um ein Zeichen zu finden bleiben zwei Varianten:
a) variable Speichermenge pro Zeichen, und jedesmal Liste durchlaufen
bis zum gefundenen Zeichen
b) konstante Speichermenge pro Zeichen und einfacher Feldzugriff

512 Byte / 64 = 8 Byte
du hast also 8 Byte pro Zeichen zur Verfügung,
im einfachsten Fall für jedes Zeichen eine 8x8 Punkte-Matrix

Für eine Proportionalschrift (unterschiedlich breite Zeichen) brauchst
du eine Làngenangabe, wobei du von einer Mindestlànge ausgehen kannst,
d.h. du brauchst 2 oder 3 Bit.

Wenn du keinen Verwendungszweck für die restlichen 5 oder 6 Bit
hast, bietet es sich an, die Làngenangaben in einem separaten
Feld zusammenzufassen.

64 * 2 Bit = 16 Byte

Allerdings sind die 512 Byte ja schon mit 64 mal 8 Byte voll.
Bei einer 8x7 Matrix brauchst du zur Feldindizierung allerdings
eine Multiplikation mit 7, die je nach Befehlsumfang deiner
Hardware wesentlich mehr Code braucht, also ein Shift-Left um 3.

usingwhitespaceisracism

Ähnliche fragen