Adafruit_GFX Librarie Font

Hallo,

hiermit

tft.fillScreen(BLUE);
  tft.setFont(&FreeSerifBold9pt7b);
tft.setCursor(12, 308);
   tft.print("LCD");

setze ich den Font für die PrintAnweisung
mit

tft.setFont(&FreeSerifItalic9pt7b);

wähle ich einen neuen Font. Alles gut

Aber wie bekomme ich den originalen Adafruit_GFX-Font wieder geladen?
"tft.setFont()" funktioniert nicht.
Gruß und Dank
Andreas

Hallo,
die "GFX-Font´s" müssen in den Font-Ordner.

dann

tft.setFont(0);

Gruß und Spaß
Andreas

Hallo,
das ist aber Mist, und funktioniert aber nicht richtig.
Es funktioniert nur, wenn man es so anlegt:

tft.setFont(&FreeSerifItalic9pt7b);
tft.setFont(0);

Steht in der Zeile vor- tft.setFont(0); keine deklaration für einen Font, dann läuft das nicht.
Es muß doch einen Weg geben, den System-Font der GFX wieder zu aktivieren.
Gruß und Dank
Andreas

In gfxfont.h lese ich "Pass NULL to revert to 'classic' fixed-space bitmap font." Hast Du schon tft.setFont(NULL); versucht?

EDIT: Habe gerade mal probiert:

  tft.setTextColor(ILI9341_WHITE);
  tft.setTextSize(2);
  tft.println("Hallo1!");
  tft.setFont(&FONT);
  tft.setTextSize(1);
  tft.println("");
  tft.println("Hallo2!");
  tft.setFont(NULL);
  tft.setTextSize(2);
  tft.println("Hallo3!");

Scheint zu funktionieren :slight_smile:

Hallo,
zu dem o.g. Fehler kommt es nur, wenn es im Setup aufgerufen wird.
In Loop funktioniert tft.setFont() ohne Probleme. Man lernt ja nie aus.
Übringens, "NULL" steht in der EDV für "nichts", aber das weißt Du sicher.

Diese mit- gelieferten Font´s sind der letzte Dreck. Ist ja nett, wenn es etwas dazu gibt. Kannste aber nur
gebrauchen zum Märchen schreiben.
Die Font´s sind nicht transparent. Sie überschreiben nicht mit Vorder- Hintergrundfarbe.
Kannst ja mal einen "Zähler++" laufen lassen...
Man kann zwar den alten Wert mit Hintergrundfarbe überschreiben, aber das ist viel zu aufwendig.
Und ein Rechteck setzen, na- ja...

Ich muß einmal sehen, ob ich mir nicht einen neuen SystemFont bastel kann.
Gruß und Dank
Andreas

SkobyMobil:
Die Font´s sind nicht transparent. Sie überschreiben nicht mit Vorder- Hintergrundfarbe.

Aus Adafruit_GFX.cpp: "The background color feature has typically been used with the 'classic' font to overwrite old screen contents with new data. This ONLY works because the characters are a uniform size; it's not a sensible thing to do with proportionally-spaced fonts with glyphs of varying sizes (and that may overlap)."

In Adafruit_GFX.cpp habe ich hinter dem Textblock ab Zeile 574 mal folgende Änderung vorgenommen:

   for(yy=0; yy<h; yy++) {
      for(xx=0; xx<w; xx++) {
        if(!(bit++ & 7)) {
          bits = pgm_read_byte(&bitmap[bo++]);
        }
        if(bits & 0x80) {
          if(size == 1) drawPixel(x+xo+xx, y+yo+yy, color);
          else          fillRect(x+(xo16+xx)*size, y+(yo16+yy)*size, size, size, color);
        } else if(bg != color) {
          if(size == 1) drawPixel(x+xo+xx, y+yo+yy, bg);
          else          fillRect(x+(xo16+xx)*size, y+(yo16+yy)*size, size, size, bg);
        }
        bits <<= 1;
      }
    }

Dadurch werden auch die Zeichen des Custom Fonts mit Hintergrundfarbe geschrieben. Bei FreeMono18pt7b bleiben leider ein paar Pixel stehen. Nicht perfekt, aber zeigt, wo es passiert. Möglicherweise könntest Du an der Stelle mal genauer schauen, dann wären zumindest die Mono-Fonts zu verwenden.

SkobyMobil:
Übringens, "NULL" steht in der EDV für "nichts", aber das weißt Du sicher.

Grundsätzlich schon, letztens fand aber ein schlauer Mensch heraus, daß "NULL" und nichts bei einer Sybase-Datenbank nicht identisch ist.

SkobyMobil:
Man lernt ja nie aus.

Wie war :slight_smile:

Hallo,
"Adafruit_GFX.cpp"
Das ist doch einmal ein AngriffsPunkt. Vielen Dank dafür.
Gruß und Spaß
Andreas