Thema: Delphi TextSuite will nicht

Einzelnen Beitrag anzeigen

Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#18

Re: TextSuite will nicht

  Alt 2. Jul 2008, 08:47
Zitat von EWeiss:
Zitat:
Blockmodus: Ganz klar. Du hast in deinem Editor eine Monospace Schrift. Dort haben alle Zeichen die gleiche Breite. Mit der TextSuite aber nicht. Entsprechend ist das Leerzeichen schmaler als andere Zeichen.
Ja den benutze ich ja
Nur wie kann ich erreichen das der Formatierte Block auch so angezeigt wird.
Du musst in deinem Programm auch eine Monospace (oder Fixed Width/Pitch) Schriftart benutzen. Bei der haben alle Zeichen die gleiche Breite! Sieht man bei dir schön am Wort "Title" dass es nicht so ist, denn der Buchstabe "T" ist genau so breit wie "it". Wenn du in der IDE eine andere Schrift benutzen würdest wäre es auch nicht richtig. Du brauchst dann halt noch ein Font wie zum Beispiel "Courier New". Das musst du dann zum Darstellen deines Hilfeblockes benutzen. Das Mischen von 2 Fontbibliotheken halte ich eher für keine gute Idee. Denn bei meiner Bibliothek ist so etwas auch problemlos möglich und die Zeichen aller Fonts wandern in die gleiche Textur. Oder auch mehrere Texturen falls nötig. Abgesehen davon hast du dann keine 2 unterschiedlichen Codes. Aber ich bin da evtl. auch nicht ganz unparteiisch.

Ich habe für später auch noch geplannt Tabulatoren zu unterstützen, damit so etwas auch bei allen anderen Schriften möglich ist. Aber da habe ich vorher noch genügend andere Dinge zu erledigen. Weswegen du darauf vermutlich nicht warten solltest.

Zitat:
Woran könnte das liegen und kann ich das überhaupt fixen?
Man kann alles beheben. Man muss nur erst mal herrausfinden wo das eigentliche Problem liegt. Und da du die Ansi Variante von tsTextOut benutzt habe ich da so eine Theorie.

Ansi hat nur 1 Byte pro Zeichen und kann somit nur 256 Werte annehmen. Deswegen wurden Codepages eingeführt. Diese bieten für unterschiedliche Gebietsschemen unterschiedliche Belegungen der 256 Werte. Per Default ist in der TextSuite Latin-1 (Westeuropäisch) eingestellt. Um wirklichen Unicode support zu bekommen solltest du aber keine Codepages benutzen sondern du solltest entweder mit WideStrings oder UTF-8 arbeiten. Dann hat jedes Zeichen einen eigenen Wert. Und du kannst auch koreanisch, japanisch, russisch und tai direkt mischen. UTF-8 ist da eine spezielle Codierung. Die läuft in der TextSuite über eine pseudo Codepage und die Ansi Funktionen. Ist aber trotzdem in der Lage Zeichen mit bis zu 24 Bit zu speichern. Was mehr als ausreichend ist.

Es gibt auch eine Variante von tsTextOut die direkt mit WideStrings (2 Byte pro Zeichen) klar kommt. Die Windowsapi arbeitet direkt mit Widestrings. Dann musst du aber darauf achten, dass du überall auch mit WideStrings arbeitest. Sonst gehen dir die Zeichen vorher schon verlohren. Und meine Bibliothek kann ja nur das darstellen was da auch ankommt. Im Web bzw. bei Dateien kommt aber eher UTF-8 zum Einsatz. Musst du entscheiden was du da lieber benutzen willst. Im Zweifel kann man es immer irgendwie konvertieren.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat