Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Mai 20, 2024 22:48

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Apr 06, 2013 10:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich bin grade dabei die nächste offene Beta für "Phase 2" zu finalisieren, und wollte u.a. auch ein Problem in der Darstellung von Umlauten unter Linux beheben, hab aber bisher noch keinen Anhaltspunkt gefunden der mich weiterbringt.

Momentan siehts unter Linux so aus :
http://www.saschawillems.de/misc/pjw_umlaute_linux.jpg

Sprich alle Umlaute werden falsch dargestellt. Die Strings kommen alle aus XML-Dateien die UTF-8 kodiert sind und unter Linux mit der XML-Implementation von FPC geladen werden. Interessanterweise sieht dass auch genauso aus wenn ich aus UTF-8 z.B. ISO-5598-1 mache. Die ganzen UTF-Funktionen (UTF8Decode, UTF8ToAnsi, etc.) hab ich schon ausprobiert. Wenn ich mir einen solchen String z.B. in einer Messagebox anzeigen lasse wird er übrigens korrekt dargestellt.

Jemand ne Idee? Gibt hier ja sicherlich den ein oder anderen der ne OpenGL-Anwendung mit Lazarus unter Linux laufen hat.

//edit: erstmal das bild als link reingepackt ~ Horazont

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Apr 06, 2013 11:22 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Was nutzt du denn für das Zeichnen in OpenGL? Nur daran kanns ja liegen, wenn du da einen korrekten String rein gibts.

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 07, 2013 09:21 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ganz normale Texturenfonts, zum Rendern wird dann einfach nur ein glCallList mit dem Text gemacht. Und da die unter Windows problemlos funzen nehme ich an dass hier unter Lazarus / Linux für Umlaute und Co. falsche Zeichen reingereicht werden.

Edit : Die Umlaute werden zwar z.B. in einer Messagebox korrekt angezeigt, aber Ü ist nicht gleich Ü. Sprich ein "if Name = 'Übermerika then..." tut nicht. Ich glaub hier verhält sich Linux grundlegend anders als Windows. Hat hier sonst jemand schonmal Texturenfonts mit Umlauten unter Linux gerendert? So render ich die seit Jahren problemlos unter Windows :

Code:
  1. glCallLists(Length(AText), GL_UNSIGNED_BYTE, PiChar(AText));


Ein UTF8Decode an der Stelle bringt mir übrigens die richtigen Umlaute, nur mit Codepages zwischen den Zeichen. Ich scheine aber auf dem richtigen Weg zu sein ;)

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 07, 2013 11:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Kannst du bitte das Bild kleiner machen (800× für inline images)? Antworten ist hier nen krampf, weil ich beim tippen nach rechts scrollen muss.

Ansonsten ist des Problem relativ klar. Lazarus verwendet weitgehend UTF8, weil die ganzen Backends UTF8 verwenden (und UTF8 einfach am sinnvollsten ist). Wenn deine Sourcedateien aber nicht UTF8-Kodiert sind, können natürlich bei so einem If-Vergleich lustige sachen passieren ;). FreePascal hat leider keinen ordentlichen Unicode-Support (nicht so ordentlich wie z.B. der von Python), dann wäre das Problem nicht vorhanden.

So jedenfalls musst du deinen UTF8-String irgendwie in Latin1 umwandeln… UTF8Decode macht nicht das was du willst, kannst du mal genauer sagen, was dabei rauskommt?

grüße

(Breite korrigiert)

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 07, 2013 15:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Zitat:
aber Ü ist nicht gleich Ü
sollte hier zwar irrelevant sein, aber bei Buchstaben mit Akzenten gibt es idR mehrere Codierungen. das ü zB gibt es als einzelnes Zeichen oder als u mit ̈. Ist natürlich nicht beides das gleiche, nicht einmal gleich viele Zeichen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 07, 2013 16:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Zitat:
Ein UTF8Decode an der Stelle bringt mir übrigens die richtigen Umlaute, nur mit Codepages zwischen den Zeichen. Ich scheine aber auf dem richtigen Weg zu sein

UTF8Decode liefert laut FPC-Beschreibung einen WideString. Man Kann glCallLists statt mit GL_UNSIGNED_BYTE auch mit GL_UNSIGNED_SHORT aufrufen:
Code:
  1. glCallLists(Length(AWideString),GL_UNSIGNED_SHORT,PWideChar(AWideString));


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 07, 2013 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
sharkman hat geschrieben:
Zitat:
aber Ü ist nicht gleich Ü
sollte hier zwar irrelevant sein, aber bei Buchstaben mit Akzenten gibt es idR mehrere Codierungen. das ü zB gibt es als einzelnes Zeichen oder als u mit ̈. Ist natürlich nicht beides das gleiche, nicht einmal gleich viele Zeichen.

Das ist es, was ich mit ordentlichem Unicodesupport meine. Normalisierung gehört dazu (also solche dinge auf ein einheitliches Schema runterbrechen), sonst kann man Vergleiche sofort vergessen.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 07, 2013 16:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Traude hat geschrieben:
UTF8Decode liefert laut FPC-Beschreibung einen WideString. Man Kann glCallLists statt mit GL_UNSIGNED_BYTE auch mit GL_UNSIGNED_SHORT aufrufen:
Code:
  1. glCallLists(Length(AWideString),GL_UNSIGNED_SHORT,PWideChar(AWideString));


Jopp, genauso hab ich es nach meiner obigen Entdeckung mit UTF8Decode auch eingebaut :)

Endlich korrekte Umlaute für Linux. Jetzt nochmal umbooten, in nem echten Linux ausprobieren und wenns gut ist gibts nachher ein neues PjW-Release ;)

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 07, 2013 19:17 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
juhu :)

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.021s | 14 Queries | GZIP : On ]