Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter   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 | Quelltext 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 256 Codeseiten mit jeweils 256 Zeichen = 65.536 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 fast alle Unicode-Seiten einen Font, nur die reinen Sonderzeichen-Seiten fehlen (unicode_page_00.png bis unicode_page_ff.png).
  • 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 zwei ASCII-Zeichen-Dateien berechnet Minecraft die Zeichenbreiten beim Laden der Dateien automatisch. Für die 65.536 Unicode-Zeichen würde das aber zu lange dauern. Daher gibt es die Datei glyph_sizes.bin, die alle Unicode-Zeichenbreiten enthält.

Herkunft[Bearbeiten | Quelltext bearbeiten]


  • minecraft.jar:
    Das Minecraft-Programm.

    • assets:
      Die Standard-Ressourcen.

      • minecraft:
        Die Minecraft-Standard-Ressourcen.

        • font:
          Schriftdaten.

          • glyph_sizes.bin:
            Die Unicode-Zeichenbreiten.

        • textures:
          Texturdaten.

          • font:
            Die Schriftzeichen.

Änderbarkeit[Bearbeiten | Quelltext 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. Im Minimalfall ist das nur die Standardschrift ascii.png.

Standardschrift ändern[Bearbeiten | Quelltext bearbeiten]

Die Minecraft-Standardschrift

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 ascii.png ersetzen. Für jedes Zeichen stehen 8×8 Pixel zur Verfügung, die voll ausgenutzt werden können, denn die Zwischenräume fügt Minecraft selbständig ein.

Zu beachten ist, dass ein Zeichen immer an der Pixelposition 0 beginnt. Daher sind alle Zeichen üblicherweise linksbündig eingetragen. Lässt man das Zeichen an einer größeren Pixelposition beginnen, wird es trotzdem ab Pixelposition 0 dargestellt, d.h. inklusive der leeren Pixel.

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.

Zaubertisch-Schrift ändern[Bearbeiten | Quelltext 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.

Schriftzeichen für andere Sprachen ändern[Bearbeiten | Quelltext 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.

Geschichte[Bearbeiten | Quelltext 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. Nichtdestotrotz gab er schon mal die geplante Struktur an:


  • Das namenlose Haupt-TAG.
    •  
      font:
      Eine Schrift.
      •  
        characters:
        Alle Schriftzeichen.
        •  
          Die Werte für ein Schriftzeichen. Wenn der Name des TAGs default lautet, enthält es die Standardwerte für jedes Schriftzeichen. Ansonsten ist der Name des TAGs eine Zahl, die den Index des Schrifzeichens bezeichnet. Möglich sind Werte 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].

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]