Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Verwenden von Schriftarten

In Godot können Sie bestimmte Schriftarten für verschiedene UI-Nodes festlegen.

Es gibt drei verschiedene Stellen, an denen Sie die Verwendung von Schriften einstellen können. Der erste ist der Theme-Editor. Wählen Sie den Node, für den Sie die Schriftart festlegen möchten, und wählen Sie den Tab Schriftart. Der zweite ist im Inspektor für Control-Nodes unter Theme Überschreibungen> Fonts. Und schließlich im Inspektor für die Einstellungen von Themes unter Default-Schriftart.

Wenn nirgends eine Schriftartüberschreibung angegeben wird, wird Open Sans SemiBold als Default-Projektschriftart verwendet.

Bemerkung

Seit Godot 4.0 werden die Schriftgrößen nicht mehr in der Schriftart selbst, sondern in dem Node definiert, der die Schriftart verwendet. Dies geschieht im Abschnitt Theme-Überschreibungen > Schriftgrößen des Inspektors.

Dadurch kann die Schriftgröße geändert werden, ohne dass die Schriftressource für jede unterschiedliche Schriftgröße dupliziert werden muss.

Es gibt 2 Arten von Schriftdateien: dynamische (TTF/OTF/WOFF/WOFF2-Formate) und Bitmap (BMFont .fnt-Format oder monospaced image). Dynamische Schriftarten werden am häufigsten verwendet, da sie in der Größe verändert werden können und auch in größeren Formaten noch klar und deutlich aussehen. Dank ihres vektorbasierten Charakters können sie auch viel mehr Glyphen enthalten und dabei eine vernünftige Dateigröße im Vergleich zu Bitmap-Schriften beibehalten. Dynamische Schriftarten unterstützen auch einige fortgeschrittene Funktionen, die Bitmap-Schriftarten nicht unterstützen können, wie z.B. Ligaturen (mehrere Zeichen, die sich in ein einziges separates Design verwandeln).

Tipp

Sie können frei lizenzierte Schriftdateien auf Websites wie Google Fonts und Font Library finden.

Schriftarten unterliegen dem Urheberrecht. Überprüfen Sie die Lizenz einer Schriftart, bevor Sie sie verwenden, da nicht alle Schriftarten die kommerzielle Nutzung ohne den Erwerb einer Lizenz erlauben.

Siehe auch

Sie können sehen, wie Schriftarten in Aktion funktionieren, indem Sie das BiDI and Font Features demo project verwenden.

Dynamische Schriftarten

Godot unterstützt die folgenden dynamischen Schriftformate:

  • TrueType-Schriftart oder -Collection (.ttf, .ttc)

  • OpenType Schriftart oder -Collection (.otf, .otc)

  • Web Open Font Format 1 (.woff)

  • Web Open Font Format 2 (.woff2, ab Godot 3.5)

Obwohl .woff und vor allem .woff2 tendenziell zu kleineren Dateigrößen führen, gibt es kein allgemein "besseres" Schriftformat. In den meisten Fällen ist es empfehlenswert, das Schriftformat zu verwenden, das auf der Website des Schriftart-Entwicklers angeboten wird.

Bitmap-Schriftarten

Godot unterstützt das BMFont (.fnt) Bitmap-Schriftformat. Dieses Format wurde von dem Programm BMFont erstellt. Es gibt auch viele BMFont-kompatible Programme, wie BMGlyph.

Alternativ können Sie auch ein beliebiges Bild importieren, das als Bitmap-Schriftart verwendet werden soll. Dies wird nur für Monospaced-Schriftarten unterstützt (Schriftarten, bei denen jedes Zeichen die gleiche Breite hat). Wählen Sie dazu das Bild im "Dateisystem"-Dock aus, wechseln Sie zum "Importieren"-Dock, ändern Sie den Importtyp in Schriftdaten (Monospace Image Font) und klicken Sie auf Neu importieren:

Ändern des Importtyps in Schriftartdaten (Monospace Image Font)

Ändern der Importart in Schriftarten (Monospace Image Font)

Das Layout der Schriftart kann in beliebiger Reihenfolge sein, aber es wird empfohlen, eine Reihenfolge zu wählen, die dem Unicode-Standard entspricht, da sie weit weniger Konfiguration für den Import erfordert. Die nachstehende Bitmap-Schriftart enthält zum Beispiel ASCII-Zeichen und folgt der ASCII-Standardreihenfolge:

Beispiel einer Bitmap-Schriftart

Quelle: LibreQuake (skaliert und beschnitten, um den erweiterten Bereich auszuschließen)

Die folgenden Importoptionen können verwendet werden, um das obige Schriftart-Bild erfolgreich zu importieren:

Importoptionen für die obige Beispielschriftart

Importoptionen für die obige Beispielschriftart

Die Option Zeichenbereiche ist ein Array, das jede Position im Bild abbildet (in Kachelkoordinaten, nicht in Pixeln). Der Schriftart-Atlas wird von links nach rechts und von oben nach unten durchlaufen. Zeichen können mit Dezimalzahlen (127), Hexadezimalzahlen (0x007f) oder zwischen einfachen Anführungszeichen ('~') angegeben werden. Bereiche können mit einem Bindestrich zwischen den Zeichen angegeben werden.

Zum Beispiel bezeichnet 0-127 (oder 0x0000-0x007f) den gesamten ASCII-Bereich. Ein anderes Beispiel: ' '-'~' ist gleichbedeutend mit 32-127 und bezeichnet den Bereich der druckbaren (sichtbaren) ASCII-Zeichen.

Stellen Sie sicher, dass die Option Zeichenbereiche die Anzahl der definierten Spalten × Zeilen nicht überschreitet. Andernfalls wird die Schriftart nicht importiert.

Wenn Ihr Schriftart-Bild Ränder enthält, die nicht für Schriftglyphen verwendet werden (wie z.B. Attributinformationen), versuchen Sie, den Bild-Seitenrand anzupassen. Dies ist ein Seitenrand, der nur einmal um das gesamte Bild herum angewendet wird.

Wenn Ihre Schriftart Hilfslinien (in Form von Linien zwischen Glyphen) enthält oder wenn die Abstände zwischen den Zeichen nicht korrekt erscheinen, versuchen Sie, den Zeichen-Seitenrand anzupassen. Dieser Seitenrand wird für jede importierte Glyphe angewendet.

Laden einer Schriftart-Datei

Um eine Schriftart-Datei (dynamisch oder als Bitmap) zu laden, verwenden Sie die Option Schnelles Laden oder Laden im Dropdown-Menü der Ressource neben einer Schriftart-Property und navigieren dann zu der betreffenden Schriftart-Datei:

../../_images/using_fonts_load_font.webp

Laden einer Schriftart-Datei

Sie können auch eine Schriftart-Datei aus dem FileSystem-Dock per Drag&Drop auf die Inspektor-Property ziehen, die eine Schriftart-Ressource akzeptiert.

Warnung

In Godot 4.0 und höher werden Texturfilter- und Wiederholungs-Propertys an der Stelle definiert, an der die Textur verwendet wird, und nicht auf der Textur selbst. Dies gilt auch für Schriftarten (sowohl dynamische Schriftarten als auch Bitmap-Schriftarten).

Bei Pixel-Art-Schriftarten, sollte die bilineare Filterung deaktiviert werden, indem die Projekteinstellung Rendering > Texturen > Canvas-Texturen > Default-Texturfilter auf Nearest geändert wird.

Die Größe der Schriftart muss ebenfalls ein ganzzahliges Vielfaches der Designgröße sein (die für jede Schriftart unterschiedlich ist), und der Node, der die Schriftart verwendet, muss ebenfalls um ein ganzzahliges Vielfaches skaliert werden. Andernfalls kann die Schriftart unscharf aussehen. Schriftarten in Godot werden in Pixeln (px) und nicht in Punkten (pt) angegeben. Beachten Sie dies, wenn Sie Schriftarten in verschiedenen Programmen vergleichen.

Der Texturfiltermodus kann auch für einzelne Nodes festgelegt werden, die von CanvasItem erben, indem CanvasItem.texture_filter gesetzt wird.

Umrisse und Schatten von Schriftarten

Umrisse und Schatten von Schriftarten können verwendet werden, um die Lesbarkeit zu verbessern, wenn die Hintergrundfarbe nicht im Voraus bekannt ist. Dies ist zum Beispiel bei HUD-Elementen der Fall, die über eine 2D/3D-Szene gezeichnet werden.

Schriftarten sind in den meisten Nodes verfügbar, die sich von Control ableiten, zusätzlich zu Label3D.

Um die Umrisslinie für eine Schriftart auf einem bestimmten Node zu aktivieren, konfigurieren Sie die Theme-Overrides Font Outline Color und Outline Size im Inspektor. Das Ergebnis sollte wie folgt aussehen:

Beispiel für eine Schriftart

Beispiel für eine Schriftart

Bemerkung

Wenn Sie eine Schriftart mit MSDF-Rendering verwenden, muss die Importoption MSDF-Pixelbereich mindestens auf den zweifachen Wert der Umrissgröße eingestellt werden, damit die Umrisse korrekt wiedergegeben werden. Andernfalls kann es sein, dass der Umriss früher als beabsichtigt abgeschnitten wird.

Die Unterstützung für Schriftart-Schatten ist eingeschränkter: Sie sind nur in Label und RichTextLabel verfügbar. Außerdem haben Schriftarten-Schatten immer eine harte Kante (aber Sie können ihre Deckkraft reduzieren, um sie dezenter aussehen zu lassen). Um Schriftart-Schatten auf einem bestimmten Node zu aktivieren, konfigurieren Sie die Theme-Overrides Schattenfarbe, Schattenversatz X und Schattenversatz Y in einem Label- oder RichTextLabel-Node entsprechend:

Konfigurieren der Schriftart-Schatten in einem Label-Node

Konfigurieren der Schriftart-Schatten in einem Label-Node

Das Ergebnis sollte wie folgt aussehen:

Beispiel für Schriftart-Schatten

Beispiel für Schriftart-Schatten

Tipp

Sie können lokale Überschreibungen für die Anzeige von Schriftarten in Label-Nodes erstellen, indem Sie eine LabelSettings-Ressource erstellen, die Sie in allen Label-Nodes wiederverwenden. Diese Ressource hat Vorrang vor Theme-Propertys.

Erweiterte Schriftart-Funktionen

Antialiasing

Sie können einstellen, wie die Schriftart beim Rendern geglättet werden soll, indem Sie Antialiasing und Hinting einstellen. Dies sind unterschiedliche Propertys mit unterschiedlichen Anwendungsfällen.

Antialiasing steuert, wie die Glyphkanten beim Rastern der Schriftart geglättet werden sollen. Die Default-Antialiasing-Methode (Graustufen) funktioniert auf allen Anzeigetechnologien gut. Bei kleinen Größen kann das Graustufen-Antialiasing jedoch dazu führen, dass Schriftarten unscharf aussehen.

Die Antialiasing-Schärfe kann durch die LCD-Subpixel-Optimierung verbessert werden, die das Subpixelmuster der meisten LCD-Displays ausnutzt, indem sie das Antialiasing der Schriftart pro Kanal (Rot/Grün/Blau) ausgleicht. Der Nachteil ist, dass dies zu "Fringing" an den Rändern führen kann, insbesondere bei Display-Technologien, die keine Standard-RGB-Subpixel verwenden (wie OLED-Displays).

Für die meisten Spiele wird empfohlen, die Default-Antialiasing-Funktion Graustufen zu verwenden. Für Anwendungen, die keine Spiele sind, ist die LCD-Subpixel-Optimierung eine Überlegung wert.

Schriftart-Antialiasing-Vergleich

Von oben nach unten: Deaktiviert, Graustufen, LCD-Subpixel (RGB)

Bemerkung

Antialiasing kann bei MSDF-gerenderten Schriftarten nicht geändert werden - diese werden immer mit Graustufen-Antialiasing gerendert.

Hinting

Hinting steuert, wie aggressiv die Glyphenkanten beim Rastern der Schriftart an Pixeln einrasten sollen. Keine ergibt das glatteste Erscheinungsbild, was die Schriftart bei kleinen Größen unscharf erscheinen lassen kann. Leicht (Default) ist schärfer, da die Glyphenkanten nur auf der Y-Achse an Pixeln ausgerichtet werden, während Voll noch schärfer ist, da die Glyphenkanten sowohl auf der X- als auch auf der Y-Achse an Pixeln ausgerichtet werden. Je nach persönlicher Vorliebe kann es sein, dass Sie einen der beiden Hinting-Modi dem anderen vorziehen.

Vergleich Schriftart-Hinting

Von oben nach unten: Keine, Leichtes, Volles Hinting

Bemerkung

Wenn die Änderung des Hinting-Modus nach dem Klicken auf Neu importieren keine sichtbaren Auswirkungen hat, liegt das in der Regel daran, dass die Schriftart keine Hinting-Anweisungen enthält. Dies kann behoben werden, indem Sie nach einer Version der Schriftart suchen, die Hinting-Anweisungen enthält, oder indem Sie Autohinting erzwingen im Import-Dock aktivieren. Dadurch wird das Autohinting von FreeType verwendet, um automatisch Hinting-Anweisungen in die importierte Schriftart einzufügen.

Subpixel-Positionierung

Die Subpixel-Positionierung kann angepasst werden. Dies ist eine Funktion von FreeType, die es ermöglicht, Glyphen näher an ihrer beabsichtigten Form zu rendern. Mit der Default-Einstellung Auto wird die Subpixel-Positionierung bei kleinen Schriftarten automatisch aktiviert, bei großen Schriftarten jedoch deaktiviert, um die Rasterungs-Performance zu verbessern.

Sie können den Subpixel-Positionierungsmodus auf Deaktiviert, Halbes Pixel oder Viertel-Pixel einstellen. Ein Viertel-Pixel bietet die beste Qualität, allerdings auf Kosten längerer Rasterungszeiten.

Die Änderung von Antialiasing, Hinting und Subpixel-Positionierung wirkt sich am deutlichsten bei kleineren Schriftarten aus.

Warnung

Bei Pixel-Art-Schriftarten sollte der Subpixel-Positionierungsmodus auf Deaktiviert eingestellt sein. Andernfalls kann es vorkommen, dass die Schriftart ungleichmäßige Pixelgrößen aufweist.

Dieser Schritt ist für Bitmap-Schriftarten nicht erforderlich, da die Subpixelpositionierung nur für dynamische Schriftarten (die in der Regel aus Vektorelementen bestehen) relevant ist.

Mipmaps

Standardmäßig werden bei Schriftarten keine Mipmaps erzeugt, um den Speicherbedarf zu verringern und die Rasterung zu beschleunigen. Dies kann jedoch dazu führen, dass herunterskalierte Schriftarten körnig werden. Dies kann besonders bei 3D-Text auffallen, bei dem Feste Größe nicht aktiviert ist. Dies kann auch auftreten, wenn Text mit einer traditionell gerasterten (nicht MSDF) Schriftart in einem Control-Node angezeigt wird, dessen Skala kleiner als (1, 1) ist.

Nachdem Sie eine Schriftart im Dateisystem-Dock ausgewählt haben, können Sie die Mipmaps im Import-Dock aktivieren, um die Darstellung von herunterskalierten Schriftarten zu verbessern.

Mipmaps können auch für MSDF Schriftarten aktiviert werden. Dies kann die Qualität der Schriftart bei kleineren als den Default-Größen ein wenig verbessern, aber MSDF-Schriftarten sind bereits von Haus aus resistent gegen Körnigkeit.

MSDF-Schriftart-Rendering

Das Rendering Multi-Channel Signed Distance Field (MSDF)-Schriftart-Rendering ermöglicht das Rendern von Schriftarten in beliebiger Größe, ohne dass sie bei Größenänderungen neu gerastert werden müssen.

Das MSDF-Rendern von Schriftarten hat zwei Vorteile gegenüber der herkömmlichen Rasterung von Schriftarten, die Godot standardmäßig verwendet:

  • Die Schriftart sieht auch bei großen Größen immer klar und deutlich aus.

  • Beim erstmaligen Rendern von Zeichen bei großen Schriftarten kommt es zu weniger Stutter-Effekten, da keine Rasterung durchgeführt wird.

Die Nachteile des MSDF-Schriftart-Rendering sind:

  • Höhere Basiskosten für das Rendern von Schriftarten. Auf Desktop-Plattformen macht sich dies in der Regel nicht bemerkbar, kann sich aber auf Low-End-Mobilgeräten bemerkbar machen.

  • Schriftarten in kleinen Größen sehen aufgrund des fehlenden Hintings nicht so klar aus wie gerasterte Schriftarten.

  • Das erstmalige Rendern neuer Glyphen bei kleinen Schriftgrößen kann im Vergleich zu traditionellen gerasterten Schriftarten teurer sein. Vorberechnung von Schriftarten kann verwendet werden, um dieses Problem zu lindern.

  • Die LCD-Subpixel-Optimierung kann für MSDF-Schriftarten nicht aktiviert werden.

  • Schriftarten mit sich selbst überschneidenden Umrissen werden im MSDF-Modus nicht korrekt wiedergegeben. Wenn Sie Rendering-Probleme bei Schriftarten feststellen, die Sie von Websites wie Google Fonts heruntergeladen haben, versuchen Sie stattdessen, die Schriftart von der offiziellen Website des Schriftart-Autors herunterzuladen.

Vergleich von Methoden zur Rasterung von Schriftarten

Vergleich der Methoden zur Rasterung von Schriftarten. Von oben nach unten: gerastert ohne Oversampling, gerastert mit Oversampling, MSDF

Um das MSDF-Rendering für eine bestimmte Schriftart zu aktivieren, wählen Sie sie im Dateisystem-Dock aus, wechseln Sie zum Import-Dock, aktivieren Sie Multichannel Signed Distance Field und klicken Sie dann auf Neu importieren:

Aktivieren von MSDF in den Importoptionen der Schriftart

Aktivieren von MSDF in den Importoptionen der Schriftart

Emojis verwenden

Godot verfügt über eine begrenzte Unterstützung für Emoji-Schriftarten:

  • CBDT/CBLC (eingebettete PNGs) und SVG-Emoji-Schriftarten werden unterstützt.

  • COLR/CPAL-Emoji-Schriftarten (benutzerdefiniertes Vektorformat) werden nicht unterstützt.

  • Die EMJC-Bitmap-Bildkomprimierung (die von der iOS-System-Emoji-Schriftart verwendet wird) wird nicht unterstützt. Das bedeutet, dass Sie zur Unterstützung von Emoji unter iOS eine benutzerdefinierte Schriftart verwenden müssen, die stattdessen SVG- oder PNG-Bitmap-Komprimierung verwendet.

Damit Godot Emojis anzeigen kann, muss die verwendete Schriftart (oder eine ihrer Fallbacks) diese enthalten. Andernfalls werden Emojis nicht angezeigt und stattdessen erscheinen "Tofu"-Zeichen als Platzhalter:

Default Aussehen bei der Verwendung von Emoji in einem Label

Default Aussehen bei der Verwendung von Emoji in einem Label

Nach dem Hinzufügen einer Schriftart zur Darstellung von Emojis, wie z. B. Noto Color Emoji, erhalten Sie das erwartete Ergebnis:

Korrektes Aussehen nach Hinzufügen einer Emoji-Schriftart zum Label

Korrektes Aussehen nach Hinzufügen einer Emoji-Schriftart zum Label

Um eine reguläre Schriftart zusammen mit Emojis zu verwenden, empfiehlt es sich, in den erweiterten Importoptionen der regulären Schriftart eine Fallback-Schriftart anzugeben, die auf die Emoji-Schriftart verweist. Wenn Sie bei der Anzeige von Emojis die Default-Projektschriftart verwenden möchten, lassen Sie die Property Base Font in FontVariation leer und fügen Sie eine Schriftart als Fallback hinzu, die auf die Emoji-Schriftart verweist:

Tipp

Emoji-Schriftarten sind ziemlich groß, daher sollten Sie eine Systemschriftart laden, um Emoji-Glyphen bereitzustellen, anstatt sie mit Ihrem Projekt zu bündeln. Dies ermöglicht eine vollständige Unterstützung von Emoji in Ihrem Projekt, ohne die Größe des exportierten PCKs zu erhöhen. Der Nachteil ist, dass Emojis je nach Plattform unterschiedlich aussehen, und das Laden von Systemschriftarten wird nicht auf allen Plattformen unterstützt.

Es ist auch möglich, eine Systemschriftart als Fallbackschriftart zu verwenden.

Verwendung von Schriftarten für Symbole

Tools wie Fontello können verwendet werden, um Schriftarten zu erzeugen, die aus SVG-Dateien importierte Vektoren enthalten. Dies kann verwendet werden, um benutzerdefinierte Vektorelemente als Teil Ihres Textes zu rendern, oder um extrudierte 3D-Symbole mit 3D-Text und TextMesh zu erstellen.

Bemerkung

Fontello unterstützt derzeit nicht die Erstellung mehrfarbiger Schriftarten (die von Godot wiedergegeben werden können). Ab November 2022 wird die Unterstützung für mehrfarbige Schriftarten in Tools zur Erzeugung von Icon-Schriftarten nur noch spärlich vorhanden sein.

Je nach Anwendungsfall kann dies zu besseren Ergebnissen führen als die Verwendung des img-Tags in RichTextLabel. Im Gegensatz zu Bitmap-Bildern (einschließlich SVGs, die beim Import durch Godot gerastert werden), können echte Vektordaten ohne Qualitätsverlust auf jede beliebige Größe gebracht werden.

Nachdem Sie die generierte Schriftart-Datei heruntergeladen haben, laden Sie sie in Ihr Godot-Projekt und geben Sie sie als benutzerdefinierte Schriftart für einen Label-, RichTextLabel- oder Label3D-Node an. Wechseln Sie zur Fontello-Weboberfläche und kopieren Sie das Zeichen, indem Sie es auswählen und dann Strg + C (Cmd + C unter macOS) drücken. Fügen Sie das Zeichen in die Text-Property Ihres Label-Nodes ein. Das Zeichen wird als Platzhalterglyphe im Inspektor angezeigt, sollte aber im 2D/3D-Viewport korrekt erscheinen.

Um eine Icon-Schriftart neben einer traditionellen Schriftart im selben Control zu verwenden, können Sie die Icon-Schriftart als fallback angeben. Dies funktioniert, weil Icon-Schriftarten den Unicode-Bereich private use area verwenden, der für die Verwendung durch benutzerdefinierte Schriftarten reserviert ist und von vornherein keine Standardglyphen enthält.

Bemerkung

Mehrere moderne Schriftarten wie Font Awesome 6 haben eine Desktop-Variante, die Ligaturen zur Angabe von Symbolen verwendet. Damit können Sie Icons angeben, indem Sie ihren Namen direkt in die Text-Property eines beliebigen Nodes eingeben, der Schriftarten anzeigen kann. Sobald der Name des Icons vollständig als Text eingegeben wird (z.B. Haus), wird er durch das Icon ersetzt.

Dieser Ansatz ist zwar einfacher zu handhaben, kann aber nicht mit Schriftarten verwendet werden, die als Fallback verwendet werden, da die Zeichen der Hauptschriftart Vorrang vor den Ligaturen der Fallback-Schriftart haben.

Schriftart-Fallbacks

Godot unterstützt die Definition eines oder mehrerer Fallbacks, wenn in der Hauptschriftart eine anzuzeigende Glyphe fehlt. Es gibt 2 Hauptanwendungsfälle für die Definition von Schriftart-Fallbacks:

  • Verwendung einer Schriftart, die nur lateinische Zeichensätze unterstützt, aber eine andere Schriftart, um Text in einem anderen Zeichensatz wie z.B. Kyrillisch anzeigen zu können.

  • Verwendung einer Schriftart zur Darstellung von Text und einer anderen Schriftart zur Darstellung von Emojis oder Icons.

Öffnen Sie das Dialogfeld "Erweiterte Importeinstellungen", indem Sie im "Dateisystem"-Dock auf die Schriftart-Datei doppelklicken. Sie können die Schriftart auch im "Dateisystem"-Dock auswählen, zum "Import"-Dock gehen und dann unten Erweitert... wählen:

../../_images/using_fonts_advanced_import_settings.webp

Import-Dock

Suchen Sie in dem daraufhin angezeigten Dialogfeld den Abschnitt Fallbacks in der rechten Seitenleiste, klicken Sie auf den Text Array[Font] (Größe 0), um die Property zu erweitern, und klicken Sie dann auf Element hinzufügen:

../../_images/using_fonts_font_fallbacks_add.webp

Hinzufügen der Fallback-Schriftart

Klicken Sie auf den Dropdown-Pfeil des neuen Elements und wählen Sie dann eine Schriftart-Datei mit den Optionen Schnellladen oder Laden:

../../_images/using_fonts_font_fallbacks_load.webp

Laden der Fallback-Schriftart

Es ist möglich, Fallback-Schriftarten hinzuzufügen, während die Default-Schriftart des Projekts verwendet wird. Lassen Sie dazu die Property Basisschriftart leer, während Sie eine oder mehrere Schriftarten als Fallback hinzufügen.

Bemerkung

Fallback-Schriftarten können auch auf lokaler Basis definiert werden, ähnlich wie bei Features der OpenType-Schriftart, aber dies wird hier aus Gründen der Kürze nicht behandelt.

Variable Schriftarten

Godot bietet volle Unterstützung für variable Schriftarten, die es Ihnen ermöglichen, eine einzige Schriftart-Datei zu verwenden, um verschiedene Schriftstärken und -stile (normal, fett, kursiv, ...) darzustellen. Dies muss von der verwendeten Schriftart-Datei unterstützt werden.

Um eine variable Schriftart zu verwenden, erstellen Sie eine Ressource FontVariation an dem Ort, an dem Sie die Schriftart verwenden wollen, und laden Sie dann eine Schriftart-Datei in die FontVariation-Ressource:

../../_images/using_fonts_font_variation_create.webp

Erstellen einer FontVariation-Ressource

../../_images/using_fonts_font_variation_load.webp

Laden einer Schriftart-Datei in die FontVariation-Ressource

Scrollen Sie zum Abschnitt Variation der FontVariation und klicken Sie dann auf den Text Variation Coordinates, um die Liste der Achsen zu erweitern, die angepasst werden können:

../../_images/using_fonts_font_variation_variable_font.webp

Liste der Variationsachsen

Die Anzahl der Achsen, die Sie einstellen können, hängt von der geladenen Schriftart ab. Einige variable Schriftarten unterstützen nur eine Anpassungsachse (typischerweise Gewicht oder Schräge), während andere mehrere Anpassungsachsen unterstützen können.

Hier ist zum Beispiel die Schriftart Inter V mit einem Gewicht von 900 und einer Schräge von -10:

../../_images/using_fonts_font_variation_variable_font_example.webp

Beispiel für eine variable Schriftart (Inter V)

Tipp

Auch wenn die Namen und Skalen der variablen Schriftarten nicht standardisiert sind, halten sich die Designer von Schriftarten in der Regel an einige gemeinsame Konventionen. Die Gewicht-Achse beispielsweise verwendet typischerweise 400 für die "normale" Schriftart und 700 für die "fette" Schriftart.

Sie können die FontVariation in einer .tres Ressourcendatei speichern, um sie an anderen Stellen wiederzuverwenden:

../../_images/using_fonts_font_variation_save_to_file.webp

Speichern von FontVariation in einer externen Ressourcendatei

Pseudo-Fett und -Kursiv

Wenn Sie Text fett oder kursiv schreiben, sehen Sie besser aus, wenn Sie Schriftarten verwenden, die speziell für diesen Zweck entwickelt wurden. Die Abstände zwischen den Glyphen sind bei einer fetten Schriftart gleichmäßiger, und die Form bestimmter Glyphen kann sich bei kursiven Varianten völlig verändern (vgl. "a" und "a").

Echte fette und kursive Schriftarten erfordern jedoch die Auslieferung mehrerer Schriftartendateien, was den Umfang der Distribution erhöht. Eine einzelne variable Schriftart-Datei kann auch verwendet werden, aber diese Datei wird größer sein als eine einzelne nicht-variable Schriftart. Während die Dateigröße bei Desktop-Projekten in der Regel kein Problem darstellt, kann sie bei Mobil-/Web-Projekten, bei denen die Größe der Distribution so gering wie möglich gehalten werden soll, ein Problem darstellen.

Damit fette und kursive Schriftarten angezeigt werden können, ohne dass zusätzliche Schriftarten ausgeliefert werden müssen (oder eine variable Schriftart mit größerem Schriftgrad verwendet wird), unterstützt Godot pseudo-fette und kursive Schriftarten.

Pseudo-fette/kursive Schrift (oben), echte fette/kursive Schrift (unten). Verwendete normale Schriftart: Open Sans SemiBold

Pseudo-fette/kursive Schrift (oben), echte fette/kursive Schrift (unten). Verwendete normale Schriftart: Open Sans SemiBold

Pseudo-Fett und Kursiv wird automatisch in den Tags bold und italic von RichTextLabel verwendet, wenn keine benutzerdefinierten Schriftarten für Fett und/oder Kursiv angegeben sind.

Um Pseudo-Fettschrift zu verwenden, erstellen Sie eine FontVariation-Ressource in einer Property, in der eine Font-Ressource erwartet wird. Setzen Sie Variation > Embolden auf einen positiven Wert, um eine Schriftart fetter zu machen, oder auf einen negativen Wert, um sie weniger fett zu machen. Empfohlene Werte liegen zwischen 0.5 und 1.2, je nach Schriftart.

Pseudo-Kursivschrift wird durch eine Schrägstellung des Textes erzeugt, die durch eine Änderung der zeichenbezogenen Transformation erreicht wird. Dies ist auch in FontVariation mit der Eigenschaft Variation > Transform möglich. Setzt man die Komponente yx der Zeichentransformation auf einen positiven Wert, wird der Text kursiv dargestellt. Empfohlene Werte liegen zwischen 0.2 und 0.4, abhängig von der Schriftart.

Anpassen der Schriftart-Abstände

Aus stilistischen Gründen oder zur besseren Lesbarkeit können Sie die Darstellung einer Schriftart in Godot anpassen.

Erstellen Sie eine FontVariation-Ressource in einer Property, in der eine Schriftart-Ressource erwartet wird. Im Abschnitt Variation > Extra-Abstand sind 4 Propertys verfügbar, die positive und negative Werte akzeptieren:

  • Glyphe: Zusätzliche Abstände zwischen den einzelnen Glyphen.

  • Abstand: Zusätzliche Abstände zwischen den Wörtern.

  • Oben: Zusätzlicher Abstand über Glyphen. Dies wird für mehrzeiligen Text, aber auch zur Berechnung der Mindestgröße von Controls wie Label und Button verwendet.

  • Unten: Zusätzlicher Abstand unter den Glyphen. Dies wird für mehrzeiligen Text, aber auch zur Berechnung der Mindestgröße von Controls wie Label und Button verwendet.

Die Property Variation > Transformieren kann auch eingestellt werden, um Zeichen horizontal oder vertikal zu strecken. Dies geschieht insbesondere durch die Anpassung der Komponenten xx (horizontale Skalierung) und yy (vertikale Skalierung). Vergessen Sie nicht, die Glyphenabstände anzupassen, da die Glyphentransformation keinen Einfluss darauf hat, wie viel Platz jede Glyphe im Text einnimmt. Diese Art der ungleichmäßigen Skalierung sollte sparsam eingesetzt werden, da Schriftarten im Allgemeinen nicht für die Darstellung mit Streckung konzipiert sind.

Features der OpenType-Schriftart

Godot unterstützt die Aktivierung von OpenType-Schriftarten, die eine standardisierte Möglichkeit darstellen, alternative Zeichen zu definieren, die ein- und ausgeschaltet werden können, ohne dass Schriftartendateien vollständig ausgetauscht werden müssen. Obwohl sie als OpenType-Schriftarten-Features bezeichnet werden, werden sie auch in TrueType- (.ttf) und WOFF/WOFF2-Schriftarten-Dateien unterstützt.

Die Unterstützung für OpenType-Features hängt stark von der verwendeten Schriftart ab. Einige Schriftarten unterstützen keine OpenType-Features, während andere Schriftarten Dutzende von ein- und ausschaltbaren Funktionen unterstützen können.

Es gibt 2 Möglichkeiten, OpenType-Schriftarten zu verwenden:

Global in einer Schriftart-Datei

Öffnen Sie das Dialogfeld "Erweiterte Importeinstellungen", indem Sie im "Dateisystem"-Dock auf die Schriftart-Datei doppelklicken. Sie können die Schriftart auch im "Dateisystem"-Dock auswählen, zum "Import"-Dock gehen und dann unten Erweitert... wählen:

../../_images/using_fonts_advanced_import_settings.webp

Import-Dock

Suchen Sie in dem daraufhin angezeigten Dialogfeld den Abschnitt Metadatenüberschreibungen > OpenType-Features in der rechten Seitenleiste, klicken Sie auf den Text Features (0 von N gesetzt), um die Property zu erweitern, und klicken Sie dann auf Merkmal hinzufügen:

../../_images/using_fonts_advanced_import_settings_opentype_features.webp

OpenType-Funktion-Überschreibungen in den erweiterten Importeinstellungen

Bei einer bestimmten Schriftart (FontVariation)

Um eine Schriftart zu verwenden, erstellen Sie eine FontVariation-Ressource, wie Sie es für eine Variable Schriftart tun würden, und laden dann eine Schriftart-Datei in die FontVariation-Ressource:

../../_images/using_fonts_font_variation_create.webp

Erstellen einer FontVariation-Ressource

../../_images/using_fonts_font_variation_load.webp

Laden einer Schriftart-Datei in eine FontVariation-Ressource

Scrollen Sie nach unten zum Abschnitt OpenType Features der FontVariation, klicken Sie auf den Text Features (0 of N set), um die Property zu erweitern, klicken Sie dann auf Add Feature und wählen Sie das gewünschte Feature in der Dropdown-Liste aus:

../../_images/using_fonts_font_variation_opentype_features.webp

Festlegen von OpenType-Features in einer FontVariation-Ressource

Hier ist zum Beispiel die Schriftart Inter ohne die Funktion Slashed Zero (oben) und mit der aktivierten OpenType-Funktion Slashed Zero (unten):

../../_images/using_fonts_font_variation_slashed_zero.webp

OpenType-Featurevergleich (Inter)

Sie können Ligaturen und/oder Kerning für eine bestimmte Schriftart deaktivieren, indem Sie OpenType-Funktionen hinzufügen und dann im Inspektor deaktivieren:

../../_images/using_fonts_font_variation_disable_ligatures.webp

Deaktivieren von Ligaturen und Kerning für eine Schriftart

System-Schriftarten

Warnung

Das Laden von Systemschriftarten wird nur unter Windows, macOS, Linux, Android und iOS unterstützt.

Das Laden von Systemschriftarten unter Android ist jedoch unzuverlässig, da es dafür keine offizielle API gibt. Godot muss sich auf das Parsen von Systemkonfigurationsdateien verlassen, die von Android-Drittanbietern geändert werden können. Dies kann dazu führen, dass das Laden von Systemschriftarten nicht funktioniert.

Systemschriftarten sind eine andere Art von Ressource als importierte Schriftarten.Sie werden nie wirklich in das Projekt importiert, sondern zur Laufzeit geladen.Dies hat 2 Vorteile:

  • Die Schriftarten sind nicht in der exportierten PCK-Datei enthalten, was zu einer geringeren Dateigröße des exportierten Projekts führt.

  • Da die Schriftarten nicht in das exportierte Projekt aufgenommen werden, werden Lizenzierungsprobleme vermieden, die auftreten würden, wenn proprietäre Systemschriftarten zusammen mit dem Projekt verteilt würden.

Die Engine verwendet automatisch Systemschriftarten als Ersatzschriftarten, was die Darstellung von CJK-Zeichen und Emoji ermöglicht, ohne dass eine eigene Schriftart geladen werden muss. Es gelten jedoch einige Einschränkungen, wie im Abschnitt Verwendung von Emoji erwähnt.

Erstellen Sie eine Ressource SystemFont an dem Ort, an dem Sie die Systemschriftart verwenden möchten:

../../_images/using_fonts_system_font_create.webp

Erstellen einer SystemFont-Ressource

../../_images/using_fonts_system_font_specify.webp

Angeben eines Schriftart-Namens zur Verwendung in einer SystemFont-Ressource

Sie können entweder einen oder mehrere Schriftarten explizit angeben (z.B. Arial), oder den Namen einer Alias-Schriftart angeben, die einer "Standard"-Schriftart für das System entspricht:

Schriftart-Alias

Windows

macOS/iOS

Linux

Android

sans-serif

Arial

Helvetica

Verwaltet von fontconfig

Roboto / Noto Sans

serif

Times New Roman

Times

Verwaltet von fontconfig

Noto Serif

monospace

Courier New

Courier

Verwaltet von fontconfig

Droid Sans Mono

cursive

Comic Sans MS

Apple Chancery

Verwaltet von fontconfig

Dancing Script

fantasy

Gabriola

Papyrus

Verwaltet von fontconfig

Droid Sans Mono

Unter Android wird Roboto für lateinischen/kyrillischen Text und Noto Sans für die Glyphen anderer Sprachen wie CJK verwendet. Bei Android-Distributionen von Drittanbietern kann die genaue Schriftart-Auswahl abweichen.

Wenn Sie mehr als eine Schriftart angeben, wird die erste Schriftart verwendet, die auf dem System gefunden wird (von oben nach unten). Bei Schriftart-Namen und -Aliasen wird auf allen Plattformen nicht zwischen Groß- und Kleinschreibung unterschieden.

Wie bei Schriftart-Variationen können Sie die SystemFont-Anordnung in einer Ressourcendatei speichern, um sie an anderen Stellen wiederzuverwenden.

Denken Sie daran, dass verschiedene Systemschriftarten unterschiedliche Metriken haben. Das bedeutet, dass Text, der auf einer Plattform in ein Rechteck passt, dies auf einer anderen Plattform möglicherweise nicht tut. Reservieren Sie bei der Entwicklung immer etwas zusätzlichen Platz, damit die Labels bei Bedarf weiter ausgedehnt werden können.

Bemerkung

Im Gegensatz zu Windows und macOS/iOS hängt der Satz der Default-Schriftarten unter Linux von der jeweiligen Distribution ab. Das bedeutet, dass auf verschiedenen Linux-Distributionen unterschiedliche Schriftarten für einen bestimmten Systemschriftart-Namen oder -Alias angezeigt werden können.

Es ist auch möglich, Schriftarten zur Laufzeit zu laden, selbst wenn sie nicht auf dem System installiert sind. Siehe Laden und Speichern zur Laufzeit für Details.

Vorberechnung von Schriftarten

Bei der Verwendung herkömmlicher gerasterter Schriftarten speichert Godot die Glyphen pro Schriftart und pro Größe zwischen. Dadurch wird das Stuttering reduziert, aber es kann immer noch auftreten, wenn eine Glyphe zum ersten Mal angezeigt wird, wenn das Projekt ausgeführt wird. Dies kann besonders bei höheren Schriftgrößen oder auf mobilen Geräten auffallen.

Bei der Verwendung von MSDF-Schriftarten müssen diese nur einmal in eine spezielle Textur für die Signed Distance Field-Textur gerastert werden. Das bedeutet, dass das Zwischenspeichern nur für jede einzelne Schriftart erfolgen kann, ohne dass die Schriftgröße berücksichtigt werden muss. Allerdings ist das anfängliche Rendering von MSDF-Schriftarten langsamer als das einer herkömmlichen gerasterten Schriftart bei mittlerer Größe.

Um Stuttering-Probleme im Zusammenhang mit dem Rendern von Schriftarten zu vermeiden, ist es möglich, bestimmte Glyphen vorzurendern. Dies kann für alle Glyphen geschehen, die Sie verwenden möchten (für optimale Ergebnisse), oder nur für die gängigen Glyphen, die während des Spiels am häufigsten vorkommen (um die Dateigröße zu verringern). Glyphen, die nicht vorgerendert sind, werden wie üblich in Echtzeit gerastert.

Bemerkung

In beiden Fällen (traditionell und MSDF) wird die Rasterung der Schriftarten von der CPU durchgeführt. Das bedeutet, dass die Performance der GPU keinen Einfluss darauf hat, wie lange die Rasterung der Schriftarten dauert.

Öffnen Sie das Dialogfeld "Erweiterte Importeinstellungen", indem Sie im "Dateisystem"-Dock auf die Schriftart-Datei doppelklicken. Sie können die Schriftart auch im "Dateisystem"-Dock auswählen, zum "Import"-Dock gehen und dann unten Erweitert... wählen:

../../_images/using_fonts_advanced_import_settings.webp

Import-Dock

Wechseln Sie im Dialogfeld Erweiterte Importeinstellungen auf den Prerender-Konfigurationen-Tab und fügen Sie eine Konfiguration hinzu, indem Sie auf das Plus-Symbol klicken:

Hinzufügen einer neuen Prerendering-Konfiguration im Dialogfeld Erweiterte Importeinstellungen

Hinzufügen einer neuen Prerendering-Konfiguration im Dialogfeld Erweiterte Importeinstellungen

Nachdem Sie eine Konfiguration hinzugefügt haben, vergewissern Sie sich, dass sie ausgewählt ist, indem Sie einmal auf ihren Namen klicken. Sie können die Konfiguration auch umbenennen, indem Sie auf sie doppelklicken.

Es gibt 2 Möglichkeiten, einer gegebenen Konfiguration Glyphen hinzuzufügen, die vorgerendert werden sollen. Es ist möglich, beide Ansätze kumulativ zu verwenden:

Verwendung von Text aus Übersetzungen

Für die meisten Projekte ist dieser Ansatz der bequemste, da er automatisch Text aus Ihren Sprachübersetzungen bezieht. Der Nachteil ist, dass er nur verwendet werden kann, wenn Ihr Projekt Internationalisierung unterstützt. Andernfalls halten Sie sich an den unten beschriebenen Ansatz "Benutzerdefinierten Text verwenden".

Nachdem Sie die Übersetzungen zu den Projekteinstellungen hinzugefügt haben, verwenden Sie die Glyphen aus dem Tab Übersetzungen, um die Übersetzungen durch Doppelklick zu überprüfen, und klicken Sie dann auf Alle Strings in den Übersetzungen formen und Glyphen hinzufügen am unteren Rand:

Aktivieren des Prerendering im Dialog Erweiterte Importeinstellungen mit den Glyphen auf dem Übersetzungen-Tab

Aktivieren des Prerendering im Dialogfeld Erweiterte Importeinstellungen mit dem Tab Glyphen aus den Übersetzungen

Bemerkung

Die Liste der per Prerendering vorberechneten Glyphen wird nicht automatisch aktualisiert, wenn die Übersetzungen aktualisiert werden, so dass Sie diesen Vorgang wiederholen müssen, wenn sich Ihre Übersetzungen wesentlich geändert haben.

Verwendung von benutzerdefiniertem Text

Zwar muss der Text, der im Spiel erscheinen soll, manuell eingegeben werden, doch ist dies der effizienteste Ansatz für Spiele, bei denen keine Texteingabe durch den Benutzer erforderlich ist. Dieser Ansatz ist es wert, für mobile Spiele ausprobiert zu werden, um die Dateigröße der verteilten App zu reduzieren.

Um vorhandenen Text als Basis für das Prerendering zu verwenden, wechseln Sie zum Unter-Tab Glyphen aus dem Text des Dialogfelds Erweiterte Importeinstellungen, geben Sie den Text im Fenster rechts ein und klicken Sie dann unten im Dialogfeld auf Text formen und Glyphen hinzufügen:

Aktivieren des Prerendering im Dialogfeld Erweiterte Importeinstellungen, "Glyphen aus dem Text"-Tab

Aktivieren des Prerendering im Dialogfeld Erweiterte Importeinstellungen mit dem Tab Glyphen aus dem Text

Tipp

Wenn Ihr Projekt Internationalisierung unterstützt, können Sie den Inhalt Ihrer CSV- oder PO-Dateien in das obige Feld einfügen, um alle möglichen Zeichen, die während des Spiels gerendert werden können (mit Ausnahme von benutzerdefinierten oder nicht übersetzbaren Strings), schnell per Prerendering vorzuberechnen.

Durch Aktivierung von Zeichensätzen

Die zweite Methode erfordert weniger Konfiguration und weniger Updates, wenn sich der Text Ihres Spiels ändert, und eignet sich besser für textlastige Spiele oder Multiplayer-Spiele mit Chat. Auf der anderen Seite kann es dazu führen, dass Glyphen, die nie im Spiel auftauchen, vorgerendert werden, was in Bezug auf die Dateigröße weniger effizient ist.

Um vorhandenen Text als Basis für das Prerendering zu verwenden, wechseln Sie auf den Unter-Tab Glyphen aus der Zeichentabelle des Dialogfelds Erweiterte Importeinstellungen und doppelklicken Sie dann auf der rechten Seite auf die zu aktivierenden Zeichensätze:

Aktivieren des Prerendering im Dialog Erweiterte Importeinstellungen, Glyphen auf dem Tab Zeichentabelle

Aktivieren des Prerendering im Dialogfeld Erweiterte Importeinstellungen mit dem Tab Glyphen aus der Zeichentabelle

Um ein vollständiges Prerendering zu gewährleisten, hängen die zu aktivierenden Zeichensätze davon ab, welche Sprachen in Ihrem Spiel unterstützt werden. Für Englisch muss nur Basic Latin aktiviert werden. Die Aktivierung von Latin-1 Supplement ermöglicht die vollständige Abdeckung vieler weiterer Sprachen, wie Französisch, Deutsch und Spanisch. Für Russisch muss Kyrillisch aktiviert werden, und so weiter.

Default-Projekt-Propertys für Schriftarten

Im Abschnitt GUI > Theme der erweiterten Projekteinstellungen können Sie wählen, wie die Schriftart gerendert werden soll:

  • Default-Schriftart-Antialiasing: Steuert die Methode antialiasing, die für die Default-Schriftart des Projekts verwendet wird.

  • Default-Schriftart-Hinting: Steuert die Hinting-Methode, die für die Default-Schriftart des Projekts verwendet wird.

  • Subpixelpositionierung der Default-Schriftart: Steuert die Methode Subpixelpositionierung für die Default-Projektschriftart.

  • Default-Schriftart Multichannel Signed Distance Field: Wenn true, verwendet die Default-Schriftart des Projekts MSDF-Font-Rendering anstelle der traditionellen Rasterung.

  • Default-Schriftart Mipmaps erzeugen: Wenn true, aktiviert Mipmap Erzeugung und Verwendung für die Default-Schriftart des Projekts.

Bemerkung

Diese Projekteinstellungen wirken sich nur auf die Default-Schriftart des Projekts aus (diejenige, die in der Engine-Binärdatei fest einkodiert ist).

Die Propertys der benutzerdefinierten Schriftarten werden stattdessen durch ihre jeweiligen Importoptionen bestimmt. Sie können den Abschnitt Import Defaults im Dialogfeld Projekteinstellungen verwenden, um die Standard-Importoptionen für benutzerdefinierte Schriftarten außer Kraft zu setzen.