Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter  –  Chatte im Wiki-Discord  – Noch keinen Server gefunden? Es gibt einen Wiki-Server

Schriftdaten

Aus Minecraft Wiki
Wechseln zu: Navigation, Suche

Schriftdaten sind Informationen über das Aussehen der im Spiel verwendeten Schrift.

Arten[Bearbeiten]

  • ASCII-Zeichen: Der American Standard Code for Information Interchange (ASCII) enthält in der erweiterten Fassung 256 Zeichen, deren Bedeutung und Position festgelegt sind: Die ersten 32 Zeichen sind Zeichen zur Steuerung von Geräten, z.B. dem Drucker, dann folgen das Leerzeichen und 15 Satzzeichen. Als nächstes kommen die zehn Ziffern und das Alphabet in Groß- und Kleinschrift, aufgefüllt mit weiteren Satzzeichen. Die restlichen 128 Zeichen sind nur in der erweiterten Fassung vorhanden und bestehen aus Sonderzeichen und grafischen Zeichen. Wenn der ASCII-Zeichensatz verwendet wird, weiß man, dass beispielsweise das "A" immer das Zeichen Nummer 65 ist, egal wie es aussieht. Das Aussehen wird durch die verwendete Schriftart (Font) bestimmt. In Minecraft gibt es zwei ASCII-Dateien: Eine mit dem Font für normale Schrift (ascii.png) und eine mit dem Standard Galactic Alphabet-Font für den Zaubertisch (ascii_sga.png).
  • Unicode-Zeichen: Um sämtliche Schriftzeichen aller Länder darstellen zu können, wurde das Unicode-System entwickelt. Es besteht aus Codeseiten mit jeweils 256 Zeichen. Insgesamt gibt es bereits mehr als 130.000 Unicode-Zeichen. Auch hier legt die Position die Bedeutung des Zeichens fest. Das Aussehen wird dann durch den Font bestimmt. In Minecraft gibt es für viele Unicode-Seiten einen Font (unicode_page_00.png bis unicode_page_ff.png mit einigen Lücken, siehe auch diese Tabelle).
  • TrueType-Zeichen: TrueType ist ein Standard zur Darstellung von Schriftzeichen. Dabei ist für jedes Zeichen eine geometrische Konstruktionsanweisung hinterlegt, wodurch das Zeichen auf eine beliebige Größe skaliert werden kann. Erst das Ausgabegerät (Bildschirm oder Drucker) füllt die skalierte Kontur mit Pixeln. TrueType ist in die Betriebssysteme Windows und Mac OS integriert, wodurch die Anzeige trotz der Berechnungen schnell erfolgt. Außerdem kann man die Schriftart ohne Font-Editor ansehen, indem man einfach auf die ttf-Datei doppelklickt. Dann wird das Standard-Alphabet und ein Beispielsatz automatisch angezeigt. Maximal können 65.535 Zeichen in einer TrueType-Schriftart beschrieben werden. Jedes Zeichen wird über einen Unicode identifiziert.
  • Zeichenbreiten: Für die lesbare Darstellung von Texten wird zwischen den Zeichen immer der gleiche Abstand gelassen. Die Zeichen selber können dagegen unterschiedlich breit sein. Ein "i" ist z. B. schmaler als ein "W". Für die Darstellung muss das Programm die Zeichenbreiten kennen. Für die ASCII-Zeichen-Datei berechnet Minecraft die Zeichenbreiten beim Laden der Datei automatisch. Für die Unicode-Zeichen würde das zu lange dauern. Daher gibt es die Datei glyph_sizes.bin, die alle Unicode-Zeichenbreiten enthält. Die Zeichenbreite von TrueType-Zeichen steht zusammen mit den Zeichen in der ttf-Datei.

In Minecraft gibt es zwei Schriftarten:

  • Die Minecraft-Schriftart hieß ursprünglich "default.gif" und datierte vom 16. Juni 2008, ist also fast ein Jahr älter als Minecraft. Die TrueType-Version der Minecraft-Schriftart heißt "Minecraft Seven" und wurde 2017 von dem kanadischen Schrift-Designer Patrick Griffin erstellt. Der Name spielt auf die Pixelhöhe der Bitmap-Version an, dort sind die Großbuchstaben 7 Pixel hoch (plus ein Pixel für den Abstand).
  • Die Unicode-Schriftart heißt "GNU Unifont" (Website).

Herkunft[Bearbeiten]


  • minecraft.jar:
    Das Minecraft-Programm.

    • assets:
      Die Standard-Ressourcen.

      • minecraft:
        Die Minecraft-Standard-Ressourcen.

        • font:
          Schriftdaten.

          • alt.json:
            Informationen zur Darstellung der Schrift-Alternative für den Zaubertisch.

          • default.json:
            Informationen zur Darstellung der Standard-Minecraft-Schrift.

          • glyph_sizes.bin:
            Die Unicode-Zeichenbreiten.

        • textures:
          Texturdaten.

Änderbarkeit[Bearbeiten]

Die Schriftdaten gehören zu den Standard-Ressourcen und können mit Ressourcenpaketen geändert werden. Die Fonts für ASCII- und Unicode-Zeichen sind vom Dateityp .png (Portable Network Graphics) und können mit einem Bildbetrachter angesehen und mit einem Grafikbearbeitungsprogramm verändert werden. Die Datei der Unicode-Zeichenbreiten ist vom Dateityp .bin (Binärdatei) und kann mit einem Hexadezimal-Editor angesehen und bearbeitet werden.

Um eine Datei auszutauschen, legt man ein Ressourcenpaket an und platziert die entsprechende Datei mit dem richtigen Namen im richtigen Ordner (siehe Ressourcenpaket-Aufbau). Das bedeutet, man muss nicht alle Schriftdaten in ein Ressourcenpaket stellen, sondern nur die, die man verändert hat.

Standardschrift ändern[Bearbeiten]

Die Minecraft-Standardschriftart

Die einfachste Möglichkeit zum Ändern der Standardschrift ist die Verwendung der Schrift aus einem anderen Ressourcenpaket, wenn dies die entsprechende Lizenz erlaubt.

Ansonsten kann man auch eine eigene Schrift entwickeln und die Zeichen in den Texturdateien ersetzen. Natürlich kann man auch nur einzelne Zeichen in der Standardschrift hinzufügen, damit sie nicht in der Unicode-Schrift dargestellt werden. Möchte man die Unicode-Schrift als Standardschrift, ersetzt man in einem Ressourcenpaket alle gewünschten Zeichen der Standardschrift durch den Unicode-Font.

Für jede Texturdatei wird die Höhe des Pixelrasters in den JSON-Dateien definiert. Die Breite berechnet sich automatisch (siehe #Datenstruktur). Man kann beliebig viele Texturdateien für die Standardschrift und für die alternative Zaubertischschrift angeben. Durch die Angabe der darzustellenden Zeichen in den JSON-Dateien (chars-Eigenschaft) kann man jedes Zeichen in der Standardschrift darstellen.

Die in den JSON-Dateien definierten Pixelraster können für jedes Zeichen voll ausgenutzt werden, denn die Zwischenräume fügt Minecraft selbständig ein.

Zu beachten ist, dass ein Zeichen immer am linken Rand des Pixelrasters beginnt. Daher sind alle Zeichen üblicherweise linksbündig eingetragen. Lässt man das Zeichen an einer höheren Pixelposition im Raster beginnen, wird es inklusive der leeren Pixel dargestellt.

Die Standard-Schriftfarbe ist weiß. Für die Darstellung erzeugt Minecraft automatisch einen schwarzen Schatten, der um 18 der Zeichengröße nach rechts unten versetzt ist.

Wie bei den Texturdaten können auch bei den Schriftdaten hochauflösende HD-Fonts eingesetzt werden, bei denen jedes Zeichen nicht 8×8, sondern beispielsweise 16×16, 32×32 oder 64×64 Pixel groß ist.

Unicode-Schriftzeichen ändern[Bearbeiten]

Die linke obere Ecke von unicode_page_00.png
0F  0F  0F  0F ...
 
0F  0F  0F  0F ...

0F  44  26  16 ...

16  26  16  16 ...

16  16  16  16 ...

Wenn ein Zeichen in einer der Unicode-Fontdateien geändert wird, muss seine Breite in der Datei glyph_sizes.bin angepasst werden. Diese Datei enthält 256×256 Bytes, was den 256 Unicode-Seiten mit jeweils 256 Zeichen entspricht. Die Datei beginnt mit dem ersten Zeichen der Unicode-Seite 00 und endend mit dem letzten Zeichen der Unicode-Seite ff.

Ein Unicode-Zeichen ist 16×16 Pixel groß. Das zugehörige Zeichenbreiten-Byte beschreibt mit seinem linken Halbbyte die Pixelposition (0 bis F), an der das linkeste Pixel des Zeichens steht und mit seinem rechten Halbbyte die Pixelposition (0 bis F), an der das rechteste Pixel des Zeichens steht.

Im Beispiel ist die linke obere Ecke von unicode_page_00.png dargestellt, die einen ASCII-Zeichensatz enthält, d.h. die ersten 16 Zeichen sind Steuerzeichen, gefolgt von dem Leerzeichen, einigen Satzzeichen, den Ziffern und Buchstaben. Die Steuerzeichen und auch das Leerzeichen (hier "SP" genannt) sind in diesem Font jeweils mit einem gepunkteten Kästchen umgeben. Diese Kästchen nehmen die gesamte Zeichenbreite ein, also von Position 0 bis Position F. Die Zeichenbreite ist also "0F".

Dann folgt das Ausrufezeichen. Es ist nur ein Pixel breit und beginnt und endet an Position 4, was die Zeichenbreite "44" ergibt. Das Anführungszeichen beginnt an Position 2 und endet an Position 6 ("26"). Das # beginnt an Position 1 und endet an Position 6 ("16"). Nun folgen die Ziffern und Buchstaben. Sie sind fast alle gleich breit, nämlich von Position 1 bis 6 ("16"), bis auf die Eins, die ein Pixel schmaler ist und erst an Position 2 beginnt ("26").

Die Höhe der Zeichen wird nicht angegeben, denn das Spiel kürzt nur die maximale Zeichenbreite, um überflüssige Zwischenräume wegzulassen, nicht die Zeichenhöhe.

Auch für Unicode-Zeichen können HD-Fonts eingesetzt werden. Für die Zeichenbreiten stehen jedoch weiterhin nur die 16 Positionen 0 bis F zur Verfügung. Pixel außerhalb der angegebenen Zeichenbreite werden vom Spiel bei der Darstellung abgeschnitten.

Zu beachten ist, dass die Datei glyph_sizes.bin nicht wie sonst üblich beim Laden eines Ressourcenpaketes neu geladen wird, sondern nur einmalig beim Starten des Spiels.

Beispiel:
Das Copyright-Zeichen © hat den Unicode U+00A9. Die ersten beiden Stellen geben in hexadezimaler Form die Unicode-Seite an (hier "00"). Das Copyright-Zeichen findet man also in der Datei unicode_page_00.png.

Die letzten beiden Zeichen sind die Position auf dieser Seite (hier "A9"). Da die Font-Dateien immer 16 Zeilen mit jeweils 16 Zeichen enthalten, gibt die Position "A9" praktischerweise gleich die Zeile und Spalte an, wobei die Zählung immer bei 0 beginnt: "A" steht für Zeile 10, "9" für Spalte 9.

Für die Ermittlung des Zeichenbreitenbytes in der Datei glyph_sizes.bin eignet sich am besten ein Hexadezimal-Editor, z.B. der Free Hex Editor FrHed. Bei FrHed wird die Position des ersten Bytes in jeder Zeile fünfstellig hexadezimal angezeigt. Daher stellt man den Editor so ein, dass er genau 16 Bytes in einer Zeile anzeigt. Damit ist die gesuchte Position einfach abzulesen: Die ersten drei Stellen entsprechen der Unicode-Seite (hier "000"), die vierte Stelle ist die Positionszeile (hier "a"). Dann geht man in Spalte 9 und sieht den Wert "07". Das Copyright-Zeichen belegt also die Pixelpositionen 0 bis 7.

Um das Copyright-Zeichen in Minecraft anzuzeigen, kann man z.B. im Chat den Befehl /tellraw @p {"text":"\u00A9 Copyright"} eingeben.

Zaubertisch-Schrift ändern[Bearbeiten]

Das Standard Galactic Alphabet, Groß- und Kleinbuchstaben sind identisch

Die einfachste Möglichkeit, die Zaubersprüche lesbar zu machen, ist die Ersetzung des Standard Galactic Alphabets durch die Standardschrift, indem man in seinem Ressourcenpaket die Datei ascii_sga.png mit ascii.png überschreibt.

Dadurch werden die Zaubersprüche zwar lesbar, aber da sie eine zufällige Verknüpfung von Worten sind, bleiben sie weiterhin unverständlich und mysteriös. Zur Bedeutung der verwendeten Worte siehe Zaubertisch#Die Zaubersprüche.

Datenstruktur[Bearbeiten]

Die Datei default.json definiert die Standard-Minecraft-Schrift, die Datei alt.json die Schrift-Alternative für den Zaubertisch. Beide Dateien haben denselben Aufbau:


  • Die namenlose Haupteigenschaft.

    • providers:
      Liste aller Schriftzeichen-Texturquellen. Die Reihenfolge in der Liste ist wichtig: Wenn das Spiel ein Schriftzeichen darstellen will, geht es die Liste von oben nach unten durch und stellt es mit der ersten Texturquelle dar, in der es enthalten ist. Im Originalspiel sind die Schriftzeichen mit Akzenten (accented) vor den Standardschriftzeichen (ascii) und diese vor den Unicode-Zeichen eingetragen, die teilweise dieselben Buchstaben mit Akzenten enthalten, die dadurch ignoriert werden. Möchte man ein eigenes Schriftzeichen bevorzugen, muss man eine Texturquelle erstellen, die man in der Liste an den Anfang setzt.

      • Eine Schriftzeichen-Texturquelle, hier: Bitmap.

        • type:
          Der Dateityp "bitmap" bezeichnet eine png-Datei, die jedes Schriftzeichen in Pixelform enthält.

        • file:
          Dateiname mit Namensraum im Pfad minecraft/textures.

        • height:
          Rasterhöhe für ein Zeichen in Pixeln. Ohne Angabe wird 8 angenommen. Die Rasterbreite wird berechnet, indem die Breite der Bitmap durch 16 geteilt wird. Die Texturquellen ascii.png, ascii_sga.png und nonlatin_european.png haben ein 8×8-Pixelraster für jedes Zeichen, die Texturquelle accented.png hat ein 12×9-Pixelraster.

        • ascent:
          Position der Basislinie von oben gerechnet. Der untere Strich eines großen "E" liegt auf der Basislinie. Beispiel: Die Original-Texturquellen mit dem 8×8-Pixelraster haben die Basislinie auf dem 7. Pixel von oben, die Texturquelle mit dem 12×9-Pixelraster hat die Basislinie auf dem 10. Pixel von oben.

        • chars:
          Eine Liste von Textzeilen. Jede Zeile enthält die Zeichen, die in der entsprechenden Zeile der Texturquelle abgebildet sind, beginnend bei der obersten Zeile der Texturquelle.

          • Eine Textzeile mit maximal 16 Schriftzeichen.

      • Eine andere Schriftzeichen-Texturquelle, hier: Unicode.

        • type:
          Der Dateityp "legacy_unicode" bezeichnet eine ganze Gruppe von Bitmap-Dateien, wobei der jeweilige Dateiname die entsprechende Unicode-Seite enthält.

        • sizes:
          Die Datei mit den Unicode-Zeichenbreiten (siehe #Unicode-Schriftzeichen ändern).

        • template:
          Vorlage für die Dateinamen der Unicode-Dateigruppe mit Namensraum im Pfad minecraft/textures, wobei %s durch die jeweilige Unicode-Seite ersetzt wird.

      • Eine andere Schriftzeichen-Texturquelle, hier: TrueType. TrueType-Fonts können von Ressourcenpaketen verwendet werden, aber die Schriftzeichen können verwackelt aussehen. Vom Originalspiel werden sie daher nicht verwendet.

        • type:
          Der Dateityp "ttf" bezeichnet eine ttf-Datei. Die Zeichenbreiten und -höhen sind in der Datei definiert.

        • file:
          Dateiname mit Namensraum im Pfad minecraft/font (nicht minecraft/textures/font).

        • oversample:
          Rendergenauigkeit, ohne Angabe wird der Standardwert 2.0 verwendet. Ein größerer Wert rendert die Schriftzeichen noch genauer.

        • shift:
          Verschiebung bei der Darstellung der Schriftzeichen.

          • :
            horizontale Verschiebung nach rechts, Standard ist 0.

          • :
            vertikale Verschiebung nach unten, Standard ist 0.

        • size:
          Schriftgröße, ohne Angabe wird der Standardwert 11.0 verwendet.

        • skip:
          Liste der Schriftzeichen, die in der Datei zwar enthalten sind, aber nicht gerendert werden sollen.

          • :
            Ein Schriftzeichen.

Geschichte[Bearbeiten]

Dinnerbone erklärte bei der Einführung von Ressourcenpaketen ihren Sinn als wichtigen Schritt in Richtung Plugin API. Bei der Aufzählung ihres zukünftigen Inhaltes erschien auch ein Abschnitt über Schriftzeichen[1]: Eine Schriftzeichendatei als Teil eines Ressourcenpaketes soll alle Informationen über ein einzelnes Schriftzeichen enthalten, damit dies nicht mehr im Programm für die Vielzahl der unterschiedlichen Schriften (Lateinisch, Russisch, Hebräisch, Arabisch, Koreanisch, Japanisch etc.) gemacht werden muss. Dinnerbone fügte hinzu, dass die Schriftzeichendateien aufgrund des Aufwandes bis jetzt noch nicht implementiert seien. Nichtsdestotrotz gab er schon mal die geplante Struktur an:


  • Das namenlose Haupt-TAG.

    • font:
      Eine Schrift.

      • characters:
        Alle Schriftzeichen.

        • Name des Schriftzeichens:
          Je nach Name die Werte für jedes (Name lautet "default") oder für ein bestimmtes Schriftzeichen (Name ist der Index des Schrifzeichens von 0 bis 255).

          • width:
            Die Breite des Schriftzeichens als Kommazahl (mit Punkt).

          • spacing:
            Die Abstand zum nächsten Schriftzeichen als Kommazahl (mit Punkt).

          • left:
            Der linke Einzug als Kommazahl (mit Punkt).

Dinnerbone veröffentlichte außerdem das Programm "TextureEnder"[2] zur Konvertierung von Texturenpaketen zu Ressourcenpaketen, das Funktionen zur Konvertierung von Schriftzeichen enthielt[3].

Links die Zeichendarstellung in der Minecraft-Schriftart vor Vollversion 1.13, in der Mitte die Unicode-Schrift und rechts die Minecraft-Schriftart ab Vollversion 1.13

Bis Vollversion 1.13 wurde die Minecraft-Schriftart aus der Bitmap-Datei ascii.png gelesen, die nur das Standard-Alphabet und einige zusätzliche Buchstaben enthielt. Zeichen, die in der ASCII-Datei fehlten, wurden automatisch in Unicode angezeigt, allerdings kleiner als die normalen Buchstaben und ohne Schatten, was das Schriftbild ziemlich unleserlich machte. Daher konnte man im Menü/Sprache die Schrift komplett auf Unicode umstellen. Das Schriftbild wurde dadurch wieder einheitlich, zeigte aber nicht mehr die Minecraft-Schriftart.

Um das Problem zu lösen, wurde mit Vollversion 1.13 (1.13-pre6) statt ascii.png die TrueType-Datei seven.ttf verwendet. Sie enthielt fast 1000 unterschiedliche Buchstaben und Zeichen in der Minecraft-Schriftart, darunter das lateinische, griechische und kyrillische Alphabet sowie viele Buchstaben mit diakritischen Zeichen wie z. B. á â à ä å.

Doch die TrueType-Schriftzeichen sahen an einigen Stellen verwackelt und verwaschen aus, weil sie automatisch auf eine vorgegebene Höhe gestaucht wurden, ohne das Minecraft-Pixelraster beachten zu können (MC-132736, MC-132835). Daher wurde das TrueType-Experiment bereits nach einer Woche wieder aufgegeben und zum Konzept zurückgekehrt, die Schriftzeichen in Bitmaps zu speichern.

Einzelnachweise[Bearbeiten]