Einzelnen Beitrag anzeigen
Alt 07-07-2006, 15:24   #1 (permalink)
thomiko
Rübennase
 
Benutzerbild von thomiko
 
Registriert seit: Dec 2003
Ort: Niederrhein
Beiträge: 291
[INFO] Chinesische Schriftzeichen in Flash

Hallo miteinander,

hier im Forum haben schon einige so ihre Probleme mit chinesischen (bzw. japanischen, kyrillischen ...) Schriftzeichen gehabt. Stichworte: XML, Unicode, Font einbinden usw.
Ich habe mich in den letzten Tagen ein bisschen damit befasst. Da ich eine meines Erachtens sehr flexible und schlanke Lösung dafür gefunden habe, möchte ich Euch kurz schildern, was ich so getrieben habe; vielleicht hilft das ja jemandem weiter!

1. XML, Unicode: man kann auf zwei verschiedene Arten chinesische Schriftzeichen in einer UTF-8 kodierten XML-Datei abspeichern, um sie später in Flash zu laden:
- einfach als Schriftzeichen (z.B. Copy&paste von einer Webseite)
- mittels HTML-Codes: **20013;**22269;**20849;**20135;**20826; (Ihr muesst hier nur ** durch &# ersetzen, das FF zeigt sonst die chinesischen Zeichen direkt an)

Natürlich braucht man einen Editor, der UTF-8 Daten richtig abspeichert (Word ist da sicher nicht die beste Wahl ) ... Ich verwende die WebTools-Edition von Eclipse (http://download.eclipse.org/webtools...-200512210855/), da ist ein XML-Editor dabei.

Damit wir bis hierher vom gleichen reden, hier ein Screenshot (http://www.nottingham.ac.uk/~ccztk/chinese/xml.jpg) und die entsprechende XML-Datei (http://www.nottingham.ac.uk/~ccztk/chinese/chinese.xml), damit Ihr schauen könnt, ob es in Eurem Editor richtig angezeigt wird.

2. Darstellung in Flash: die XML-Datei wird ganz normal reingeladen und der chinesische Text wird dann mittels htmlText angezeigt, keine besonderen Maßnahmen erforderlich. Gilt sowohl für manuell erzeugte als auch für dynamisch generierte Textfelder.

3. Einbetten: mit chinesischen Schriftzeichen zumindest sehr nervig und schlecht!
Theoretisch sollte das ja alle Probleme lösen, in der Praxis tut es das leider nicht. Wenn jemand eine ueberall funktionierende gute Loesung hat, gerne her damit. Ich habe wirklich sehr vieles ausprobiert.
Probleme:
- wenn man alle chinesischen Schriftzeichen einbettet, hat die swf-Datei mehr als 2MB. Außerdem dauert das swf'en der fla-Datei ewig, macht wirklich keinen Spaß.
- wenn man die Schriftzeichen als Bitmaps einbindet, dann sieht es natürlich beim Hochskalieren grauenhaft aus.
- wenn man die Schriftzeichen als Antialias-Zeichen einbindet, wird die swf-Datei noch viel größer. Außerdem werden dann bei manchen Schriftarten manche Zeichen nicht angezeigt (don't ask me why).
- egal, wie man es einbindet, man sieht auf manchen Computern trotzdem einfach nichts, keine Ahnung warum!

Mit russischen Schriftzeichen gab es bisher keine nennenswerten Probleme beim Einbetten (XML-Behandlung s.o.). Allerdings ist das nur ein Alphabet mit 33 Buchstaben im Gegensatz zu vielen tausend chinesischen Schriftzeichen. Hier als Beispiel für eingebettete russische Zeichen ein Schießspiel für die grammatischen Fälle: russische Schriftzeichen

4. meine Alternative zum Einbetten: Schriftzeichen dynamisch mittels der GD-Library (http://www.boutell.com/gd/) in PHP generieren und dann in Flash laden

Hier mal ein Beispiel: http://cele.nottingham.ac.uk/~ccztk/chinese/viewer.php (Rechtsklick auf die Zeichen und dann "Bigger" oder "Smaller" zum Rauf- und Runterskalieren)

Flash schickt ein Array mit den Codenummern der benoetigten Zeichen an PHP. PHP generiert fuer jedes Zeichen png-Bilder in verschiedenen Groessen. Wenn PHP fertig mit dem Bilderbasteln ist, dann laedt Flash diese Bilder und zeigt sie an, sobald alle Bilder der Anfangsgroesse geladen sind.

Zum Vergleich:
- alle Zeichen eingebettet -> Flash-Datei mehr als 2MB
- die PHP-GD-Methode -> Flash-Datei 12KB, alle Bilder zusammen (340 Stueck) 104KB

Wenn es jemanden interessiert, dann kann ich gerne noch mehr Infos zur PHP-GD-Methode schicken.

Viele Gruesse,

Thomas

Geändert von thomiko (07-07-2006 um 19:23 Uhr)
thomiko ist offline   Mit Zitat antworten