www.mikrocontroller.net

Forum: Codesammlung LCD Schriftarten ( Fonts in veschiedenen Größen )

Autor: Benedikt K. (benedikt) (Moderator)
Datum:
Angehängte Dateien:

Da ich auf die Schnelle keine fertige Schriftart gefunden hatte die auf
mein LCD gepasst hat, habe ich ein paar erstellt. Insgesamt sind hier 14
verschiedene Schriftgrößen von 4x6 Pixel bis 12x16 Pixel enthalten,
jeweils als Assembler und C Header mit verschiedenen Ausrichtungen
(Vertikal, Horizontal, gespiegelt, link/rechts ausgerichtet usw.)
Der Zeichensatz ist die Codepage 850.
Autor: Uwe Bonnes (Gast)
Datum:

Hallo Benedikt,

vielen Dank fuer die Fonts. Sie haben mir bei einem Problem mit
Screenkey (Schalter mit eingebauten Display) sehr geholfen.
Autor: DocFreestyle (Gast)
Datum:

Danke für die Mühe die Fonts zu erstellen. war bei meinem LED Display
eine große Hilfe.
Autor: Speedy (Gast)
Datum:

können diese ASM Fonts auch in BASCOM verwendet werden? und wenn ja wie?
Autor: Zurr (Gast)
Datum:

LCD schriften sind relativ einfach mit einem PC erstellbar. Dort, ein
kleines Prograemmchen schreiben, das einen drop down selektierbaren Font
auf einen Canvas klatscht. Diesen Canvas kann man dann als Bitmap pixel
fuer pixel auslesen. Gewisse AVR und PIC Compiler koennen das schon von
selbst.

Z
Autor: nasowas (Gast)
Datum:

@Zurr: Könntest Du vielleicht das "kleine Progrämmchen" schreiben,
vielleicht  in der Mittagspause ?
Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Jaja der Zurr cannwas
Leinwand heißt das Wort auf deutsch, hilft mir auch nicht weiter
Bitte erklären
Autor: JojoS (Gast)
Datum:
Angehängte Dateien:

ich hatte auch mal länger nach fertigen Fonts gesucht aber nicht so das
richtige gefunden. Brauchbar waren einige Tools die einen Zeichensatz in
einer Bitmap dargestellt haben und das liess sich dann speichern. Ich
habe dann ein kleines Tool gebastelt das die Bitmap einliest und
C-Defines generiert die ich dann in eine C Quelle includen kann.
Das Ganze ist in C# geschrieben und so minimalistisch wie ich es
brauchte.
Autor: Oliver (Gast)
Datum:

Ein fertiges Progrämmchen gibt es doch schon lange bei apetetch.de oder
hier im Forum im Thread zur k10108 library. Allerdings stellt man dann
doch schnell fest, daß all die schönen Windows-True-Type-Fonts in den
für LCD's typischen Größe von 6-10 Pixeln ziemlich gruselig aussehen.
Die echten Pixelfonts hier gewinnen zwar auch keinen Schönheitspreis,
sind aber wenigstens lesbar.

Oliver
Autor: Martin Strasser (cadmaniac)
Datum:

Hallo,

dieses Thema ist zwar schon etwas älter, aber der Vollständigkeit halber
wollte ich noch dazuschreiben, dass wir ins KontrollerLab aus gegebenem
Anlass einen Font-Wizard reingebastelt haben. Nähere Infos findet Ihr
hier:
http://www.cadmaniac.org/projectMain.php?projectNa...

Der Font-Wizard "grabbt" PC-Schriftarten, wie oben beschrieben, hat eine
GUI, in der man einiges einstellen und editieren kann, kann die
Schriftarten für verschiedene Displays (zeilen oder spaltenorientiert)
aufbereiten, kann RLE-Kompression...

Code zum Anzeigen der damit generierten Schriftarten sowie ein
YouTube-Video, das dieses Beispiel zeigt, findet ihr unter:
http://www.cadmaniac.org/projectMain.php?projectNa...

viele Grüße,
cadManiac
Autor: Fabian Cordes (Gast)
Datum:

Vielen Dank Benedikt,

deine Fonts waren gerade sehr nützlich :)
Autor: Benedikt K. (benedikt) (Moderator)
Datum:
Angehängte Dateien:

Hier ist eine neue, etwas korrigierte Version, da einige der Anordnungen
der Schriftarten bei der obigen Version etwas zerstückelt waren.
Autor: NrDesign (Gast)
Datum:

Vielen Dank, das neue Display kann jetzt was anzeigen :)
Autor: Jens (Gast)
Datum:

@  Benedikt K. (benedikt)

Erstmal vielen Dank für die Weitergabe der Fonts. Die helfen beim
Einstieg in die GLCDs ungemein.

Jetzt habe ich mal den 32x53-Pixel-Font probiert und dabei das Problem,
dass die angezeigten Ziffern unvollständig dargestellt werden. Links
fehlt immer ein Teil. Da die kleineren Font spielen, denke ich mal, dass
mein Code halbwegs läuft.
Deshalb meine Frage, ob es bei den gro0en Fonts irgendwas besonderes zu
beachten ist oder ob vielleicht beim konvertieren der Fehlerteufel
zugeschlagen hat?

Danke und Gruß
Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Sag mir mal genau welchen du verwendest hast, dann prüf ich das mal.
Autor: Jens (Gast)
Datum:

Ich habe den Font 32x53_horizontal_MSB_1.asm genommen.

Danke und Gruß, Jens
Autor: Benedikt K. (benedikt) (Moderator)
Datum:
Angehängte Dateien:

Ich habe den Fehler gefunden. Ich hatte einen Schreibfehler in meiner
Erstellungssoftware die um 27 statt 24bit in einem Byte geschoben hat.
Dadurch waren die Daten ein wenig verschoben.
Autor: Jens (Gast)
Datum:

Danke für die schnelle Antwort, werde ich heute abend gleich mal testen.
Autor: Jürgen Eckert (sid)
Datum:

Hallo Benedikt,

erstmal danke für deine Fonts.Sie habe mir sehr weiter geholfen. Leider
habe ich eine kleines Problemchen: Für mein Projekt brauche ich 2
verschiedene Fontgrößen. 12x16 und 22x36 sind hierfür perfekt. Doch
leider passen die Schriftarten nicht überein. OK, ich weiß das 12x20 und
22x36 die gleiche Schrift haben, aber ich finde die Schriftart von 12x16
einfach wesentlich besser und schneller lesbar. Und auf Geschwindigkeit
kommt es an...

Könntest du bitte zu deinem Fontpack noch die Font 22x36, oder wie dann
das Verhältnis auch immer ist, mit der Schriftart wie in 12x16
erstellen? Nur eine Breite von 22 (oder 21 wäre auch OK) ist wichtig.

Oder kannst du die Quellen der Fonttools offen legen und uns mitteilen
was du für Schriftarten verwendet hast?

Besten Dank
Jürgen
Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Diese andere Schriftart steht mir leider nur bis max 12x16 oder 10x18
zur Verfügung, daher kann ich nichts größeres erstellen.
Falls du aber irgendeine passende Schriftart hast, und ein Bild in der
Art wie die Bilder in dem Paket erstellen kannst, dann kann ich die
gerne in das passende Format umwandeln.
Autor: Jürgen (Gast)
Datum:

Hallo Benedikt,

danke für deine schnelle Antwort.
Das mit der Schrift ist echt schade. Vor allem die 0 finde ich ist durch
die eckigere Art einfach wesentlich besser und schneller lesbar.

Naja gut ich werde das schon irgendwie hinfrickeln.

Dank
Jürgen
Autor: Nico M. (eigo) Benutzerseite Flattr this
Datum:

Hallo, kann mal einer kurz erläutern wie man die Font Dateien verwendet?
Einfach mal als ganz simples Beispiel auf meinem Startbildschirm soll
nur ein einzelner Buchstabe dargestellt werde. Wie gehe ich vor um den
Buchstaben "auf zurufen".

Danke schon mal im vorweg!
Autor: Gast (Gast)
Datum:

Buchstabe -> zugehörige Pixeldaten aus dem Font -> auf's Display
zeichnen

Zeichenkette
 (monospaced) Buchstaben mit Fontbreite Versatz
 (proportional) Buchstaben mit festem Abstand Versatz, leere
Zeichenspalten/reihen erkennen und überspringen (=weglassen)
Autor: DeppOderNichtDepp (Gast)
Datum:

War das jetzt ein Deppenapostroph oder nicht?
Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Hier mal ein ganz einfaches Beispiel für eine 6x8 Schriftart:
#include "6x8_horizontal_LSB_1.h"

void writechar(unsigned char c)
{   unsigned char x,y,w;
    for (y=0; y<8; y++)
    {   w=font[c][y];
        for (x=0; x<6; x++)
        {   if (w&1)
                setpixel(x,y);
            else
                clrpixel(x,y);
            w=w>>1;
        }   
    }
}

Die Schriften sind ein 2 Dimensionales Array mit 256 Einträge (da 256
Zeichen) zu je einer von der Größe des Zeichens abhängigen Größe.
Autor: Christian J. (stormracer)
Datum:

Hallo,
@ Benedikt: danke für deine tollen Schriften.

Ich habe ein kleines Verständnisproblem:
das Beispielprogramm mit einer 6x8 Schrift ist mir klar und funktioniert
auch.
Aber ich möchte gerne eine 22x36 Schriftart verwenden. Bei dieser
Schrift ist mir der Aufbau der Datei aber noch nicht ganz klar.
Da bei dieser Schrift mehrere Elemete einer Array Zeile übereinander
angezeigt werden müssen um die höhe des Zeichens zu erreichen. Aber
welche Elemente liegen übereinander? Jeweils ein Viererblock?

Christian
Autor: www.muGUI.de (Gast)
Datum:

Hallo,

vielleicht ist der Font and Bitmap Generator unter www.muGUI.de für Euch
interessant. Es gibt auch einige Beispiele wie man die Schriften auf ein
Display bekommt.

Viele Grüße
muGUI
Autor: Mr Bean (Gast)
Datum:

Hallo

Ich möchte auf einem Grafik OLED die in der font.h gespeicherten Zeichen
darstellen. Das ganze funktioniert ja wenn ich das richtig sehe über ein
zweidimensionales Array.
Ich würde jetzt gerne wissen woher ich weiß, welches Zeichen in welchem
Array-Feld steht!?
Hilft da nur einmal auslesen und sich dann merken? Oder wie macht ihr
das?
Vielen Dank schonmal!

Grüße

Bean
Autor: Christian J. (stormracer)
Datum:

Hallo,

ich habe mir ein PC-Programm geschrieben, mit dem ich das Auslesen der
Datei solange probiert habe. Bin also auch nur durch Try&Error weiter
gekommen.

Hier mal meine Funktion für die 22x36 Schrift, bei der ich aber am
Anfang und Ende jeder Zeile die Leeren Elemente gelöscht habe, um das
Array kleiner zu bekommen:
void g_draw_char_large(unsigned short x1, unsigned short y1, unsigned char c)
{
  unsigned char x,y,w,n=0,x2=0,y2=0;
  for (y=0; y<76; y+=3)
  {   
     for(n=0; n<3; n++)
     {
        w=font22x36[c][y+n];
          
        for (x=14; x<22; x++)
        {   
           if (w&1)
              lcd_graphics_plot_pixel(x1+x2, y1+y2, PIXEL_ON);
           else
              lcd_graphics_plot_pixel(x1+x2, y1+y2, PIXEL_OFF);
           w=w>>1;
        
           x2++;
        }
     }
     y2++;
     x2=0; 
  } 
}

Zur Position der Zeichen in der Datei:
In jeder Zeile steht ein Zeichen. Die Zeichen sind nach ihrem ASCII Code
sortiert.
Als Beispiel:
Die Ziffer "0" ist 0x30h oder Dez. 48, dh, sie steht in dem Array in der
Zeile 48 (0x30h)
Das Zeichen "a" steht in Zeile. 97 (0x61h)

MfG Christian
Autor: SAM (Gast)
Datum:

@ Benedik Danke für die tolle Bibliothek!
Welche Fonts und Toolchain nutzt du für die kleinen Schriftarten?

Gruß Sam
Autor: Timo (Gast)
Datum:
Angehängte Dateien:

Hallo,

ich habe mir vor kurzem mal die Mühe gemacht, die 'normalen' Zeichen der
8x8 Font vom C64 LCD-gerecht zu codieren.

Die Werte sind spaltenweise im Array eingetragen, also erstes Zeichen,
erster Wert, Bit 0 entspricht dem linken oberen Pixel des 8x8 Blocks.
Bit 1 ist dann das Pixel da drunter, zweiter Wert vom ersten Zeichen,
Bit 0, ist das Pixel daneben und so weiter. Hat den Hintergrund, dass
ich so immer gleich das gesamte Byte an den LCD Kontroller schicke und
das ganze nicht mit 64 Pixeln machen muss.

Falls also jemand ein bißchen Retro-Look möchte und sein LCD ausreichen
groß ist - bei 8x8 großen Zeichen braucht man schon etwas mehr Breite -
kann er das gerne mal ausprobieren. Ich freue mich über Rückmeldungen,
weil ich es bis jetzt noch nicht geschafft habe, die Font zu testen ;)

Gruß, Timo.
Autor: Christoph V. (Gast)
Datum:
Angehängte Dateien:

Hallo allerseits,

@Timo: Dein C64 - Font hat was, siehe Anhang.

Ich hatte seinerzeit nen Amstrad CPC464, mal sehen ob ich den aus Linux
rauskrieg, dort gibt's nen emu.

Gruß, Christoph.
Autor: Christoph V. (Gast)
Datum:

Ups, da war bei mir der Fehlerteufel am Werk, der Zeichensatz stimmt,
meine Darstellung ist falsch. Die letzte Pixelreihe wird nicht
dargestellt.

Sorry.

Gruß, Christoph
Autor: Marvin M. (Gast)
Datum:

Hallo,
super - Danke, spart mir eine Menge Arbeit.
Frage: Wie ist das lizenzrechtlich? Momentan will ich einen Font noch
privat einsetzen, es könnte aber mehr daraus werden. Ich habe leider
keine Angaben über die Lizenz gefunden...?

Gruß, Marvin.
Autor: fauter@rabian (Gast)
Datum:

danqe göh
wor recht supper vu dia benedikt

Kanntesch du bittschia zu deinem Fontpack nou die Font 22x36, oder wie
nocha
deis Verhältnis hold ou allaweil isch, mit der Schriftart wia in 12x16
erstella? Lei in einer Breite fu 22 (oder 21 war ou suppr) isch iatz
schua bärig danqe ga.

Schiana griaß fum zomser, servas ga.
Autor: Michael D. (etzen_michi)
Datum:

Etwas älter aber mein Lob.

Mit welcher Software wurden diese Fonts erstellt?
Brauche einen Font vertikal MSB mit einer höhe von 32Pixeln.

Habe zwar bei Google massig Programme gefunden wie FontCreator,
GLCD_Env, eadog, fonwiz ... aber irgenwie komme ich mit den Programmen
nicht klar (ausser GLCD) da ich entweder die Windows Schriftarten nicht
öffnen kann oder ich das speichern nicht hinbekomme.

Bei GLCD geht es soweit, nur das ich das einstellen den Größe etwas
verwirrend finde und dann alles abschreiben um ggf. noch MSB umrechnen
muss.


Vielleicht hat ja auch schon jemand einen Font mit 32Bit Höhe erstellt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net