Um irgendwelchen missverständnissen vorzubeugen. Ich habe eine Fontbibliothek für OpenGL geschrieben. Dort kann ich auch noch keinen sinnvollen arabischen Text darstellen. Sondern nur einzelnen Zeichen. Also ich habe es auch noch nicht gemacht (mangels zeit) sondern nur ein bisschen was darüber gelesen.
Ich kenne mich mit den TNT Komponenten so gar nicht aus. Im übrigen kann Notepad bei passendem Font auch Unicode. Nur werden die arabischen Zeichen auch nur "normal" dargestellt. Es können recht viele Fonts arabische Zeichen. Das Problem liegt also nicht am Font sondern an etwas anderem. Arabisch ist eine Schreibschrift und die Zeichen sind nicht so wie die Zeichen aus dem Englischem. Es gibt bei arabischen Zeichen jeweils bis zu 4 Zustände. Die Zustände geben an wo sich ein Zeichen befindet. Entweder es steht alleine oder befindet sich am Anfang, in der Mitte oder am Ende eines Wortes. Normal wird meines Wissens nach immer der eigentliche Zeichencode eingegeben und das jeweilige Programm muss dann selbsttätig auf die entsprechenden Zustände schalten. Bei mangelnder Unterstützung sieht das dann so aus als ob es nur ein Ansammlung an Buchstaben wäre. Aber kein wirklich fließender Text.
Als Beispiel mal ein willkührlicher Buchstabe (Sheen). Nachzuschauen in dem Programm Zeichentabelle von Windows. Anfang - Ende haben eine Art Grundlinie. In Courier New würde man das allerdings deutlich besser sehen können als in der Schrift die das Forum verwendet.
ش - Eigentlicher Buchstabe ($0634)
ﺵ - Isolierte Form ($FEB5)
ﺷ - Anfangsform ($FEB7)
ﺸ - Mittelform ($FEB8)
ﺶ - Endform ($FEB6)
So viel zum Hintergrund. Ich denke TNT und Notepad werden nur die Charcodes so direkt übernehmen wie sie sind. Wobei ich meine bei früheren Bildern von den Controls auch richtige arabische Schrift gesehen zu haben. Aber da bin ich mir nicht sicher. Bzw findet man diese Bilder mittlerweile auch nicht mehr. Die Demo von den TNT kommt damit aber auch nicht klar. Was man da jetzt direkt machen muss weiß ich so aber leider auch nicht genau. Eigentlich müsste sich Windows beim Zeichnen selber darum kümmern. Ein Test mit
DrawTextW zeigt auch auch wieder nur einzelne Buchstaben. Alternativ könnte man eventuell den Text bei der Eingabe parsen und in die entsprechenden Zeichen umwandeln. Aber dann müsste man bei jeder Eingabe den Text vollständig analysieren. Und das ist zeimlich unpraktisch. Auf der anderen Seite gehen die TNT Controls auch nur her und aktivieren die Unterstützung von Unicode innerhalb der Fenster. Das Einzige was die Controls also machen ist es Daten hin und her zu transportieren.
Wenn man das per Hand machen wollte, dann gibt es auf unicode.org
Tabellen zu den Zeichen. Also riesige Textfiles (UnicodeData-5.2.0d12.txt) in denen alle möglichen Informationen zu jedem Zeichen enthalten sind. Unter anderem auch welche Zeichen welche Form für welches originale Zeichen darstellen. Das per Hand zu parsen ist ziemlich wüst. Nachfolgend ein Beispiel.
Quelltext
1: 2: 3: 4: 5: 6:
| 0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; ... FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; |
Ich persönlich weiß nicht ob man tatsächlich dazu gezwungen wird diese Umwandlung per Hand machen zu müssen. Auf der einen Seite könnte ich mir vorstellen, dass man das muss. Auf der anderen Seite fällt es mir schwer zu glauben, dass es tatsächlich so sein sollte.
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.