Bei TextOut wird "Nr." wird als "No" ausgegeben.

Rund um die LCL und andere Komponenten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Bei TextOut wird "Nr." wird als "No" ausgegeben.

Beitrag von Mathias »

Nochmal zum Hautthema zurück.
Wie kann ich am besten einen Monospace Text machen, der auf allen Plattformen läuft.
Ich dachte immer, mit Courier, sei das Problem gelöst.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Bei TextOut wird "Nr." wird als "No" ausgegeben.

Beitrag von Erwin »

Da sich die Schriften von BS-Version zur nächsten BS-Version sich ändern (also sogar welche dann fehlen), wird das Problem nicht so einfach zu lösen sein. Das sicherste wäre, die Schriftart selbst mitzunehmen.

Ich kann mich da an einen Beitrag erinnern, wo Jemand meinte, man müsste dann die Schrift mit in das Programm ... reinschreiben? So ganz habe ich den Beitrag nicht verstanden? Kann sein, dass Sie/Er meinte, es wie eine Unit in das Projekt einbinden, oder wie Art DLL, die dann beim ersten Start ins BS geschrieben wird? Ich weiß es nicht (mehr). Kann mich auch nicht erinnern, dass Sie/Er dies irgendwie überhaupt genauer beschrieben hätte, wie das dann gehen bzw. wie man das dann machen soll?

Ich selber bin am Überlegen, es mittels Bilder zu versuchen. Also in eine Schablone (großes Bild) die ganzen Zeichen rein zeichnen und dann mittels Funktion in ein Image zu kopieren/schreiben? Oder gleich direkt per Linie (Polygon*) die Buchstaben zeichnen? Wird in meinen Fall dann extrem aufwendig, umständlich und Ressourcen fressend, aber ... wüsste sonst nicht, wie es gehen soll.

Edit;
* Meinte Polyline.
Lazarus 2.2.0 / FP 3.2.4

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Bei TextOut wird "Nr." wird als "No" ausgegeben.

Beitrag von PascalDragon »

Erwin hat geschrieben:
Fr 4. Jun 2021, 16:47
PascalDragon hat geschrieben:
Fr 4. Jun 2021, 13:10
Genau hierfür kannst du dir den Link anschauen, den Winni gefunden hat. Das ist nur leider keine allgemeine Lösung.
Vermutlich auf Englisch (meine E-Kenntnisse sind leider schlecht), und auch sonst darf man hier und da vermutlich viel rumbasteln? Danke, aber das ist es mir nicht Wert. Bis zur nächsten Version ist es eh vielleicht wieder vorbei?

Das störende ... verwirrende ist es ja auch, dass in meinem Fall, beim Empfänger meiner Nachrichten es dann wieder als Nr. ankommt. Ob das mit dem Programm dann das selbige ist? Also bei Ihm und vermutlich auch bei mir dann No, aber bei vielen Anderen wiederum (je nach Einstellung) dann Nr.?
Es ist ein reines „Problem” der Darstellung. Und „Problem” ist in Anführungszeichen, weil es nämlich kein Problem, sondern „by design” ist. Wenn eine Font eben eine Ligatur hat und ein Text mit Ligaturen aktiviert gezeichnet wird (was mittlerweile überall der Standard sein sollte), dann wird eben die Ligatur gezeichnet. Punkt.

Das heißt für dich auch: nein, das wird nicht in einer zukünftigen Version behoben werden, da es von deinen installierten Fonts abhängt. Du kannst also entweder eine tatsächliche Courier Schrift installieren oder du folgst den Hinweisen in dem Link. Der unterste Absatz der Frage enthält einen möglichen Lösungsansatz und das solltest du zum Beispiel in den Goole Translator schmeißen können, wenn dein Englisch gar so schlecht ist.
Erwin hat geschrieben:
Fr 4. Jun 2021, 16:47
Ich finde es generell schade, dass Programme nicht mehr wie zu DOS-Zeiten eigene Schrift dabei haben. Oft sind meine Buttons ja so beschriftet, dass die eine oder andere Schrift zur folge haben könnte, dass das Wort nicht mehr ganz auf den Button passt. Und da die BS von Version zu Version andere Schriften als Standard haben, und manche sogar total raus fallen, müsste man es möglich machen, dass man im Programm selbst eine der anderen (beim BS vorhandenen) Schriftarten wählen kann. Und dann herumprobieren, welche dann passt? Wobei das mit den passen ist ja generelle ein Problem, weil man als Programmierer doch gar nicht wissen kann, was für Schrift, Größe etc. andere haben. Das wurde alles nicht richtig zu ende gedacht, finde ich.
Das ist eben unter Linux nicht so gedacht. Unter Windows können Programme weiterhin Schriftarten mitbringen, aber unter Linux (und wahrscheinlich auch macOS) eben nicht. Zumindest nicht trivial.
Mathias hat geschrieben:
Fr 4. Jun 2021, 17:08
Nochmal zum Hautthema zurück.
Wie kann ich am besten einen Monospace Text machen, der auf allen Plattformen läuft.
Ich dachte immer, mit Courier, sei das Problem gelöst.
Es läuft doch auf allen Platformen. Du kannst nur nicht für eine gleiche Darstellung auf allen Platformen garantieren, weil die installierten Schriftarten spezifisch zum System sind (und selbst wenn eine Courier installiert ist, muss das nicht heißen, dass das die gleiche Courier wie auf einem anderen System ist).
Erwin hat geschrieben:
Fr 4. Jun 2021, 21:04
Da sich die Schriften von BS-Version zur nächsten BS-Version sich ändern (also sogar welche dann fehlen), wird das Problem nicht so einfach zu lösen sein. Das sicherste wäre, die Schriftart selbst mitzunehmen.
Das hat gar nichts mit den Versionen des Betriebssystem zu tun. Unter Linux kommen Aktualisierungen der Schriften auch einfach zwischendrin rein. Und dann gibt es noch Distros wie ArchLinux die haben gar kein Konzept einer Version.
Erwin hat geschrieben:
Fr 4. Jun 2021, 21:04
Ich kann mich da an einen Beitrag erinnern, wo Jemand meinte, man müsste dann die Schrift mit in das Programm ... reinschreiben? So ganz habe ich den Beitrag nicht verstanden? Kann sein, dass Sie/Er meinte, es wie eine Unit in das Projekt einbinden, oder wie Art DLL, die dann beim ersten Start ins BS geschrieben wird? Ich weiß es nicht (mehr). Kann mich auch nicht erinnern, dass Sie/Er dies irgendwie überhaupt genauer beschrieben hätte, wie das dann gehen bzw. wie man das dann machen soll?
Das geht eben nur unter Windows.
FPC Compiler Entwickler

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Bei TextOut wird "Nr." wird als "No" ausgegeben.

Beitrag von Erwin »

PascalDragon hat geschrieben:
Sa 5. Jun 2021, 11:24
Es ist ein reines „Problem” der Darstellung. Und „Problem” ist in Anführungszeichen, weil es nämlich kein Problem, sondern „by design” ist. Wenn eine Font eben eine Ligatur hat und ein Text mit Ligaturen aktiviert gezeichnet wird (was mittlerweile überall der Standard sein sollte), dann wird eben die Ligatur gezeichnet. Punkt.

Das heißt für dich auch: nein, das wird nicht in einer zukünftigen Version behoben werden, da es von deinen installierten Fonts abhängt. Du kannst also entweder eine tatsächliche Courier Schrift installieren oder du folgst den Hinweisen in dem Link. Der unterste Absatz der Frage enthält einen möglichen Lösungsansatz und das solltest du zum Beispiel in den Goole Translator schmeißen können, wenn dein Englisch gar so schlecht ist.
Bei der älteren FF Version stand Nr. Aber bei der neuen steht jetzt No dort. FF hat also mit dem Update auch die Einstellungen verändert. Ohne mein hinzutun. Und irgendwann werden die wieder die Einstellungen (zugleich einem Update) ändern. Dann wird das Ärgernis (vielleicht) ebenfalls weg sein. Hätte ich es selber geändert, hätte ich es ja längst wieder zurück verändert, statt mich darüber zu ärgern. Aber FF macht ja so was ähnliches ständig. Das letzte FF-Update hat diesmal das ganze FF-Ausehen (Theme?) verändert, und seit dem ist FF 2-3 langsamer. Das BS käme zwar auch in Frage (wegen dem No, weil da wird man auch ständig geärgert ... geändert), aber dann müsste es eigentlich irgendwo anders, außer nur im Browser, das Problem auftreten.
Lazarus 2.2.0 / FP 3.2.4

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Bei TextOut wird "Nr." wird als "No" ausgegeben.

Beitrag von Mathias »

Ich bin wieder über dieses Problem gestossen.
Wen ich dieses komische "No" im PDF markiere, wird es als ein Zeichen angenommen, wen ich es dann kopiere und zB. hier im Forum einfüge ist es "No". Ganz normal 2 Zeichen.

Gibt es nach 3½ Jahren eine Lösung dafür oder muss man einfach damit leben ?

Gibt es eine Liste mit noch ähnlichen Sachen die so komisch abgewandelt werden ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Bei TextOut wird "Nr." wird als "No" ausgegeben.

Beitrag von Mathias »

Ich habe gerade was interessantes entdeckt.
Ich habe das ganze mal in ein Memo gepackt.

Code: Alles auswählen

  with Memo1 do begin
    Font.Name := 'Courier';
    Font.Size := 50;
    Text := 'Tag-Nr.';
  end;
Da besteht das ganze aus 3 Zeichen, so wie es ursprünglich mal war.
Aber jetzt das merkwürdige, das "N" besteht aus 2 Zeichen.
Siehe im Anhang, wo ich alles einzeln markiert habe.
Dateianhänge
Bildschirmfoto vom 2024-02-24 15-57-26.png
Bildschirmfoto vom 2024-02-24 15-57-26.png (10.91 KiB) 99 mal betrachtet
Bildschirmfoto vom 2024-02-24 15-57-19.png
Bildschirmfoto vom 2024-02-24 15-57-19.png (10.92 KiB) 99 mal betrachtet
Bildschirmfoto vom 2024-02-24 15-57-13.png
Bildschirmfoto vom 2024-02-24 15-57-13.png (10.95 KiB) 99 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Bei TextOut wird "Nr." wird als "No" ausgegeben.

Beitrag von PascalDragon »

Mathias hat geschrieben:
Sa 24. Feb 2024, 15:58
Aber jetzt das merkwürdige, das "N" besteht aus 2 Zeichen.
Das sieht nur auf Grund der Font so aus. Es sind eben drei Zeichen die durch eine Ligatur ersetzt wurde. Du musst das „N0” als eine Einheit ansehen. Zum Beispiel in der Casciada Code Font wird “>=” durch eine Ligatur ersetzt, die dem mathematischen Größer-Gleich entspricht („≥”), aber trotzdem nimmt dieses eine Zeichen den Platz zweier Monospace Zeichen ein und du kannst den Cursor damit also in der Mitte des Zeichens platzieren, was dem Platz zwischen „>” und „=” entspricht.
FPC Compiler Entwickler

Antworten