Hallo. ich habe ein Problem mit einem Script.
Dieses Script ermöglicht es, einen eigenen Schriftfont zu erstellen, welcher aber aus einem Picture ausgelesen wird. Nun ahbe ich aber das Problem das es ein amerikanisches Script ist und daher kein ä ; ö; ü und ß unterstützt wird...
Und diese europäischen Zeichen sind mein Anliegen an euch.
Ich poste hiermit den Quellcode und einen Downloadlink zu einer Demo
Das Script sieht etwas komplizierter aus, eine einfache Anpassung dürfte da für jeden ausser dem Autor, einiges an Zeit kosten.
Theoretisch müsste aber eine Anpassung der get_char-Methode sowie ein erhöhen der MAX_CHAR-Konstante reichen um zusätzliche Characters aus dem Bitmap zu ziehen, dann hättest du Platz für die deutschen Sonderzeichen.
Ich kann aber nicht garantieren, daß das funktioniert.
Alternativ könntest du in einer speziellen Bitmap-Font, für normalen Text nicht benötigte Sonderzeichen durch die deutschen Umlaute und das ß ersetzen, wobei du dann beim Schreiben von Texten, die du damit zeichnest, das entsprechende amerikanische Sonderzeichen statt dem dt. Umlaut verwendest. (Hier wäre es wohl besser, den Text normal vorzuschreiben und dann die Suchen&Ersetzen-Funktion des Skript-Editors zu nutzen)
Das Script sieht etwas komplizierter aus, eine einfache Anpassung dürfte da für jeden ausser dem Autor, einiges an Zeit kosten.
Theoretisch müsste aber eine Anpassung der get_char-Methode sowie ein erhöhen der MAX_CHAR-Konstante reichen um zusätzliche Characters aus dem Bitmap zu ziehen, dann hättest du Platz für die deutschen Sonderzeichen.
Ich kann aber nicht garantieren, daß das funktioniert.
...
Reicht wohl leider nicht...Jedenfalls hab ich das schonmal ausprobiert (allerdings mit sehr wenig RGSS- Kenntnis)
Zitat von MagicMagor
Alternativ könntest du in einer speziellen Bitmap-Font, für normalen Text nicht benötigte Sonderzeichen durch die deutschen Umlaute und das ß ersetzen, wobei du dann beim Schreiben von Texten, die du damit zeichnest, das entsprechende amerikanische Sonderzeichen statt dem dt. Umlaut verwendest. (Hier wäre es wohl besser, den Text normal vorzuschreiben und dann die Suchen&Ersetzen-Funktion des Skript-Editors zu nutzen)
...
Darüber hatte ich auch schon nachgedacht... Allerdings verträgt sich das dann nicht mit einer anderen Sache, und zwar dass der Spieler selbst schreiben können soll...
--
~> Fantasie ist wertvoller als Wissen, denn Wissen ist begrenzt. (Einstein) <~:
1. Demo hier erhältlich =D
-------------------------------------
Darüber hatte ich auch schon nachgedacht... Allerdings verträgt sich das dann nicht mit einer anderen Sache, und zwar dass der Spieler selbst schreiben können soll...
...
Dafür bietet aber Ruby eine Lösung, die String-Methode gsub, mit denen du alle Vorkommen eines Musters in einem String durch etwas anderes ersetzen kannst.
Du kannst also die Eingabe des Nutzers nehmen, durch gsub jagen um die nötigen Ersetzungen für die Anzeige per Bitmap-Font zu machen und dabei den Text noch in der unveränderten Version behalten, falls du ihn mittels normaler Fonts anzeigen willst.
Das ist Script ist zwar recht umständlich geschrieben, aber soweit ich das sehe gibt es bereits die Buchstaben 'ä', 'ü' usw. Nur das 'ß' fehlt, kann man ja noch hinzufügen. Einfach in Zeile 507 in dem riesigen irrsinnigen Case-Statement ein
einfügen (wtf? warum nimmt man dafür keinen Hash ;__ und MAX_CHARS auf 101 setzen.
Das eigentliche Problem, warum es nicht funktioniert: Ruby 1.8 arbeitet nur auf Bytestrings und nicht auf Kodierungen. Darum kann man nicht auf einzelne Zeichen eines Strings zugreifen, sondern nur auf einzelne Bytes. Für einen Amerikaner ist das ziemlich uninteressant, weil die Buchstaben des englischen Alphabets in einem Byte kodiert sind. Nun sind aber alle Strings im Maker in UTF-8 kodiert. Und deutsche Umlaute haben in UTF-8 die Länge 2 Bytes. Darum schlägt das Script fehl, wenn es nur einzelne Bytes abfragt.
Es gibt da aber einen Trick: Reguläre Ausdrücke können in Ruby mit UTF-8 Kodierung umgehen. Mit ihnen lassen sich Bytestrings in einzelne Charakter-Arrays zerlegen.
Da wäre einmal die Methode text_size. Korrigiert sieht sie so aus:
Und dann die Methode draw_bitmap_text:
Die Originalmethoden durch die korrigierten ersetzen. Hoffentlich reicht das aus, damit das Script Umlaute erkennt.
Ich verstehe ehrlichgesagt kein Wort von dem was du da sagst-KD- ....
Aber ich weiß das dein genialer Code funktioniert
Ich danke dir vielmals !! Ehrlich
--
~> Fantasie ist wertvoller als Wissen, denn Wissen ist begrenzt. (Einstein) <~:
1. Demo hier erhältlich =D
-------------------------------------