Hallo allerseits,
ich wollte an dieser Stelle mal mein Programm "FNTEdit" vorstellen. Es handelt sich hierbei um einen, in C# für .NET Framework 2.0, geschriebenen Editor für die FNT Dateien von Gothic.
Features:
Lesen und Schreiben von FNT Dateien
Generieren von FNT Informationen basierend auf einer Bilddatei
Darstellung der geladenen Font mit Markierung des gewählten Buchstaben, drei Rahmenarten, benutzerdefinierte Farbe
Zoom bis 500%, optionale Darstellung des Alpha-Kanals, Angabe der Mausposition
Vorschau-Funktion der aktuellen Font auf diversen Schriftstücken mit benutzerdefiniertem Text
Unterstützung der Code Pages Windows-1250 (Tschechisch, Polnisch und Rumänisch), Windows-1251 (Russisch) und Windows-1252 (Englisch/Deutsch), alle 224 Buchstaben editierbar
Bedienung:
Eine FNT Datei sowie eine dazugehörige Bilddatei über "File > Open" öffnen oder die FNT Informationen aus einer Bilddatei über "File > Create" generieren lassen
Alpha Kanal ggf. über "Extras > Alpha Channel > Enable/Disable" ein- bzw. ausblenden
Einen Buchstaben aus der Drop Down-Liste auswählen (ggf. vorher die Code Page ändern), ein Rahmen wird um den Buchstaben gezogen, ggf. Rahmenart und -farbe ändern
Die Koordinaten des Buchstaben (UV1-U und UV2-U) sowie Width ändern (Height gilt für alle Buchstaben), Änderung mit Enter bestätigen
Einen Text in die Textbox der Vorschau eingeben ggf. das Schriftstück wechseln, Eingabe mit Enter bestätigen
Geänderte FNT speichern über "File > Save"
Hinweis:
Gothic verschiebt bei der Darstellung der Texte die rechte Koordinate um -2 in X- bzw. U-Richtung, daher wirken die Buchstaben abgeschnitten, wie man besonders an dem "n" erkennen kann. FNTEdit simuliert diese Fehldarstellung und stellt zur Behebung die Prozeduren "Fix Widths (1px)" und "Fix Widths (2px)" unter "Extras" zur Verfügung.
Danksagung:
Bedanken möchte ich mich bei Lonewulf, der mir während der Entwicklung sehr mit Fehlerbeschreibungen und konstruktiver Kritik geholfen hat. Ebenfalls bedanken möchte ich mich bei Gottfried, der mir hin und wieder Tipps gegeben hat - denn dies ist mein erstes, größeres Projekt in C#.
Was ist mit: "Die Koordinaten des Buchstaben (UV1-U und UV2-U) sowie Width ändern (Height gilt für alle Buchstaben), Änderung mit Enter bestätigen" gemeint? Ich dachte die Koordinaten wählt man aus, indem man einen Rahmen um den Buchstaben zieht.
Ich dachte die Koordinaten wählt man aus, indem man einen Rahmen um den Buchstaben zieht.
Ne, der Rahmen wird auf Basis der Koordinaten gezogen. Eine Änderung der Koordinaten in den Textboxen ist mit Enter zu bestätigen.
Bei der Vorschau (und auch bei Gothic) wird der durch die Koordinaten definierte Bereich auf Width * Height skaliert. Wenn man also einen Buchstaben von 0px bis 2px definiert, die Breite aber mit 20px angibt, so wird er nachher auf 10-fache Breite skaliert dargestellt - es ist also sinnvoll hier das Verhältnis 1:1 zu benutzen.
Hier noch die Anforderungen an eine Schriftart-Textur:
die Breite und Höhe sind quasi beliebig, sollten aber im Seitenverhältnis 2:1 stehen
auf der Textur wird eine Tabelle mit 8 Zeilen und 28 Spalten abgebildet, dargestellt werden die Zeichen nach Windows-1251 bzw. Windows-1252 ab dem 32 Zeichen (Leerzeichen), die Zellen müssen gleich groß sein
der Rahmen der Tabelle muss Rot, in RGB (255/0/0), und exakt 1px (unabhängig von der Texturgröße!) breit sein um die Zellen zu separieren, FNTEdit lässt in diesem Punkt jedoch eine minimale Farbabweichung zu
der Hintergrund der Tabelle muss Tiefschwarz, in ARGB (0/0/0/0), sein um den Hintergrund von den Buchstaben zu unterscheiden, FNTEdit und Gothic lassen in diesem Punkt jedoch keine Farbabweichung zu
Wird mir vlt später noch sehr gute Dienste leisten. Ich finde es immer wieder schön wenn Leute wie du sowas großartiges für die Community zusammenbringen
Werde ich benutzen, das macht das Briefe schreiben echt einfacher.
Das kommt einer Zweckentfremdung recht nahe. Ich weis dich am besten an dieser Stelle am besten gleich mal darauf hin, dass ich nicht weis ob der beschreibbare Textbereich auf den Schriftstücken denen von Gothic gleicht - ich vermute nicht. Die Vorschau ist zudem ein wenig.. naja, sagen wir mal primitiv. Zur Zeit kann sie nämlich nur ein vorrangestelltes Leerzeichen überspringen, aber das werde ich vermutlich noch ausbauen.
Zitat von Axarion
Ein kleines Tutorial dazu wäre natürlich perfekt
Hmm.. meinst du, dass der Punkt "Bedienung" nicht reicht?
Ansonsten vielen Dank für das Lob und viel Spaß allen Moddern, die dieses Tool benutzen um ihre eigene Schriftart zu optimieren.
Ich hab heute noch ein wenig dran gearbeitet. Das Programm ist nun besser gegen Falscheingaben abgesichert und die Vorschau ist intelligenter (vorrangestellte Leerzeichen werden übersprungen, Zeilenumbruch wenn Wort länger als verbleibender Platz, Bindestrich-Schreibweise wenn Wort länger als Zeile). Der Download-Link ist immer aktuell.
So.. noch ein kleines Update vor Feierabend. Nun ist auch die Höhe der Koordinaten editierbar (auch wenn ich davon abrate sie zu verändern) und das Programm ist noch etwas besser abgesichert. Man merkt schon, dass sich das Projekt noch immer in Arbeit befindet.
Das Tool erspart ´ne Menge zeitaufwendige Umrechenarbeit, und durch die direkte Vorschau mit den verschiedenen Hintergründen auch die ständige in Augenscheinnahme der durchgeführten Änderungen inGame.
Da Gothic die Buchstaben mit einem starren Abstand von 2 Pixeln platziert, muss man für ein einigermaßen homogenes Schriftbild möglichst bei jedem Buchstaben individuell entscheiden, ob man ein Pixel opfert, um den Zwischenraum zu verkleinern oder nicht, da sonst schnell ungleichmäßige Buchstabenzwischenräume entstehen.
Gerade die in G1/G2 verwendeten Buchschriften profitieren von einer Bearbeitung stark. Denn sie haben rechts keinen Schattenwurf, wie die Dialog und Menüschriften, und somit schlägt bei ihnen die Fehldarstellung mit voller Härte zu.
Ich bin mal so frei, und hänge zwei Vorher-Nachher-Screens von einem Tagebuch aus G1 und Returning ran.
EDIT:
Das Ergebnis wurde erzielt, indem für jedes Zeichen einzeln entschieden wurde, in welchem Ausmaß die Korrektur durchgeführt wird.
Bei den Interpunktionszeichen, Zahlen sowie meisten Sonderzeichen und Großbuchstaben wurde um 2 Pixel korrigiert, bei den restlichen Sonderzeichen und Großbuchstaben sowie den meisten Kleinbuchstaben nur um 1 Pixel, da sonst die seitlichen Zwischenräume zu groß wurden (Gothic schiebt schon grundsätzlich 2 Pixel dazwischen). Einige Kleinbuchstaben wurde hingegen sogar eingekürzt wenn große Schlenker die Zeichenzwischenräume unnötig vergrößerten (f, j, l ...) oder die Textur stark ausgefranst war (e auf der linken Seite).
Hi ThielHater,
Your program for working with fonts was very useful, I use it to modify FNT for enlarged fonts for play Gothic 1 and Gothic 2 on high resolution: http://worldofplayers.ru/threads/25865/
Are you going to develop the app further? Any other functions being added?
What if it would be possible to operate different coordinate values in packet-mode? "Fix Widths "(1px)" and "Fix Widths (2px)" cut is not what I needed, in my case i needed to cut one pixel of each symbol only from first value UV2, I had to select each one symbol and lower the value to 1.
Possibility to change texture name inside FNT-file. It's easier to edit one single FNT & change its name & apply it to another TGA texture because some textures differ from one another only by color.
Generated in Font2Targa fonts in black color with black background fill displayed in the preview FNTEdit as black rectangles, while in-game symbols are displayed normally. Enabling and disabling alpha in FNTedit situation did not change.
I'm happy to see that someone actually used my program but I have to disappoint you, there is no newer version of it. I decided to release the source code under CC BY-NC 4.0 and translated the comments, so anyone who speaks english and knows C# may adopt it and continue development.
You can easily add a procedure to the code which does, what you described. The image file referenced in the FNT file can be changed with a hex editor. I can't remember it clearly, but there was a problem with TGA files and alpha. I recommend to save it as PNG and load that file.