image image


image

Worknote: Fonts in Pygame Zero

Gerade in Spielen möchte man ja häufig andere Schriften nutzen, als die oft als langweilig empfundenen System-Fonts. Und daher kam während meiner jüngsten Erkundungsreisen durch die Pygame-Zero-Welt auch bei mir die Frage hoch, wie denn diese Bibliothek mit hinzugeladenen Schriften umgeht. Wenn man die etwas versteckte Seite zu »Text Formatting« in der Dokumentation gefunden hat, ist die Antwort schon überwältigend:

Denn die Methode Screen.draw.text() akezeptiert eine Unmenge von Paramtern, die das Erscheinungsbild des auszugebenden Textes beeinflussen, so daß kaum Wünsche offen bleiben (doch dazu weiter unten mehr).

Ich habe das jedenfalls erst einmal mit diesem kleinen Minimalprogramm ausprobiert (der Quelltext ist bei russian wegen der besseren Lesbarkeit in zwei Zeilen umgebrochen, der Text muß jedoch in einer Zeile stehen):

import pgzrun

WIDTH = 640
HEIGHT = 480
TITLE = "Seltsame Zeichen in Pygame Zero 🤡"

margin = 20
start = 80

palindrom = "Zwölf Boxkäpfer jagen Eva quer über den großen Sylter Deich."
russian   = "Ljudmila Michailowna Pawlitschenko (Людмила Михайловна Павличенко) 
gilt als erfolgreichste Scharfschützin aller Zeiten."

texts = [palindrom, russian]

def draw():
    global start
    screen.fill((30, 30, 30))
    for text in texts:
        screen.draw.text(text, (margin, start), fontname = "comichelvetic_medium", fontsize = 32,
                         color = (237, 118, 112),
                         width = WIDTH - 2*margin, lineheight = 1.5)
        print(text)
        start += 120

pgzrun.go()

Dazu ein Hinweis: Pygame Zero erwartet Fonts im Verzeichnis fonts (ähnlich wie bei images für Bilder und sounds für Töne), sonst findet es die Schriften nicht. Die Fonts müssen im .ttf-Format vorliegen und die Namen müssen kleingeschreiben sein. Ich habe daher die nur im .otf-Format erhältliche Comic Helvetic mit einem der vielen Online-Tools nach TTF gewandelt und den Namen in comichelveltic_medium.ttf geändert.

Was geht nicht? Wie man an obigem Screenshot erkennen kann, gehen zumindest alle europäischen Schriften inklusiv Sonderzeichen wie zum Beispiel German Umlauts. Pygame Zero versagte allerdings bei chinesischen und japanischen Schriften wie auch bei Emojis. Und das ist kein Fehler des Fonts, denn wie man hier sehen kann, kommt die Comic Helvetic damit klar. Und auch Thonny schluckt die Zeichen ohne zu meckern, ich habe sie von der IDE testweise auf der Konsole ausgeben lassen.

Auch wenn ich momentan bei meinen Experimenten (noch!) nicht die Notwendigkeit sehe, japanische und/oder chinesische Zeichen ausgeben zu müssen, besteht hier ohne Zweifel noch einen Nachbesserungbedarf.


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image