Tutorial:Fonts and Text (Deutsch)

Es ist nicht schwer Fonts in LÖVE einzufügen und zu nutzen, man sollte jedoch stets daran denken das man Fonts erst setzen muss um diese nutzen zu können. Es ist nicht möglich Text direkt aus einem Fontobjekt zu rendern, dies muss immer über die love.graphics.print Funktion geschehen welche den Text dann mit dem derzeitig gesetztem Font rendert. Es gibt drei unterschiedliche Arten von Fonts in LÖVE:

  • Den Standardfont ( Bitstream Vera Sans ) ( standardmäßig gesetzt )
  • Fonts aus Fontdateien ( alle von FreeType unterstützten Formate )
  • Fonts aus Grafiken ( ImageFont )


Ein Fontobjekt mit dem Standardfont erstellen

Der Standardfont kann von jedem erstellt und genutzt werden:

font = love.graphics.newFont(14) -- Die Nummer gibt die Größe des Fonts an

Hinweis: Inzwischen ist es nicht mehr nötig den Standardfont zu setzen bevor man einen Text mit love.graphics.print ausgibt. Dieser wird, sollte kein anderer Font zuvor gesetzt worden sein, automatisch erstellt.


Ein Fontobjekt aus einer Fontdatei erstellen

Fontdateien sind Dateien die aus dem Internet bezogen oder selbst erstellt werden können. Man lädt sie ähnlich wie den Standardfont, mit dem Unterschied das zusätzlich der Dateipfad angegeben werden muss:

font = love.graphics.newFont("AwesomeFont.ttf", 15)

Denk daran dass Fontdateien möglicherweise einer Lizenz unterliegen und sie somit nicht uneingeschränkt genutzt werden dürfen.


Ein Fontobjekt aus einer Grafik erstellen

Ein ImageFont ist etwas schwerer zu erklären, da er aus einer speziell formatierten Grafik geladen wird. Wenn du dir folgendes anschaust...

example image

...siehst du das es Buchstaben in einer einzigen Reihe beinhaltet, welche alle durch eine bestimmte Farbe getrennt werden. Diese Farbe muss zwischen jedem Buchstaben und am Anfang der Liste gezeichnet werden. Nun kann ein Font aus der Grafik wie folgt erstellt werden:

font = love.graphics.newImageFont("imagefont.png",
    " abcdefghijklmnopqrstuvwxyz" ..
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ0" ..
    "123456789.,!?-+/():;%&`'*#=[]\"")


Achtung: Stelle sicher das alle Buchstaben von der Farbe getrennt werden, denn ansonsten wird der letzte Buchstabe( in diesem Falle " ) nicht funktionieren!


Das erstellte Fontobjekt nutzen

Jetzt wo du dein Fontobjekt erstellt hast musst du es als das derzeitige Fontobjekt setzten. Dies kannst du wie folgt machen:

-- font = Das Fontobjekt welches du zuvor erstellt hast
love.graphics.setFont(font)


Text zeichnen und formatieren

Jetzt wo du deinen schönen Font geladen hast möchtest du natürlich etwas damit machen. Um Text auszugeben nutzt du einfach die love.graphics.print Funktion:

love.graphics.print("This is some awesome text", 100, 100)

Du kannst natürlich auch Nummern ausgeben:

num = 15
love.graphics.print(num, 100, 150)

Die standardmäßigen Textfunktionen unterstützen manuelle Textumbrüche ( mit '\n' )und zeichnen Text in Linksausrichtung:

love.graphics.print("This is the first line\nThis is the second one.\n(and a third)\n\nfifth", 100, 200)

Die Werte 100 und 200 sind jeweils die x und y Position des Textes. In LÖVE Versionen vor 0.6.0 wurde love.graphics.draw genutzt um Text anzuzeigen.

LÖVE unterstützt außerdem Textumbrüche und Ausrichtung mit der komplexeren love.graphics.printf Funktion:

love.graphics.printf("A really long sentence which will probably be broken into many pieces by my love.", 500, 100, 250, 'right')

Hier stehen die Werte '500' und '100' wieder für die x und y Position, '250' ist die maximale Textbreite und 'right' ist die Ausrichtung des Textes.

Durch diese Weise ist es relativ einfach seinen Text zentriert anzeigen zu lassen, indem man die Breite des Fenster als die maximale Textbreite und 0 als die x Position setzt:

love.graphics.printf("This text will be centered no matter what.\n(and you LOVE it)", 0, 400, 800, 'center')

Text wird immer mit Linksausrichtung angezeigt sofern die Ausrichtung nicht gesetzt wird:

love.graphics.printf("Aligned to the left, yes very much so.", 100, 500, 150)

Das war alles darüber wie man Text ausgibt. Für weitere Informationen schau dir die Dokumentation an.

Achtung: Alle Fonts ( auch ImageFonts ) werden von der derzeitig gesetzten Farbe erfasst, es ist nicht notwendig den Farbmodus auf 'modulate' zu setzen.



Andere Sprachen