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

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

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

Beitrag von Mathias »

Wies gibt folgender Code "No" anstelle von "Nr." aus ?

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Font.Name := 'Courier';
  Canvas.TextOut(10, 10, 'Artikel Nr.  123456');
end;
Kann man das irgendwie verhindern ?
Dieser Bug/Features habe ich bei Linux Mint festgestellt.
Es muss mit der Schriftart 'Courier' zusammenhängen.
Dateianhänge
Bildschirmfoto vom 2021-06-02 15-57-39.png
Bildschirmfoto vom 2021-06-02 15-57-39.png (4.59 KiB) 4456 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

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

Beitrag von Winni »

Hi!

Glaub ich nicht, dass das an dem Font liegt.

Ich vermute, dass der Druckertreiber ganz schlau sein will und "Nr" ersetzt mit UTF-8

U+2116

E28496
14845078
№
NUMERO SIGN

Teste das doch mal einem anderen Font.
Ist ja spannend.


Winni

Mathias
Beiträge: 6210
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 »

Habe gerade folgendes probiert:

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Font.Name := 'ubuntu';
  Canvas.TextOut(10, 10, 'Artikel Nr.  123456');
  Canvas.Font.Name := 'Arial';
  Canvas.TextOut(10, 30, 'Artikel Nr.  123456');
  Canvas.Font.Name := 'Courier';
  Canvas.TextOut(10, 50, 'Artikel Nr.  123456');
end;
Wie kommst du auf Druckertreiber ?
Ich gebe auf dem Bildschirm aus.
Dateianhänge
Bildschirmfoto vom 2021-06-02 16-36-36.png
Bildschirmfoto vom 2021-06-02 16-36-36.png (10.89 KiB) 4446 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6210
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 »

Mit TextOut hat es nichts zu tun, bei einem Caption auf einem Button der selbe Effekt.

Code: Alles auswählen

  Button1.Font.Name:='Courier';
  Button1.Caption:='Nr. 123';
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

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

Beitrag von wp_xyz »

Hab gerade kein Mint zur Hand, aber mit Ubuntu 20.10 is alles ok.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

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

Beitrag von Winni »

Hi!

Sorry! Solch einen Quatsch hatte ich schon mal bei einem Druckertreiber.

Dann ersetzt irgendein Teil der Software "Nr." durch "№"

Diese Software muss man aufs Kreuz legen.

Erster Test:

Ersetzte mal "Nr." durch "Nr:" (Doppelpunkt)

Zweiter Test:

In Nr das ganz schmale Space (U+202F) einfügen:

'N'+ #$E2 + #$80 + #$AF +'r.'

Scheint ja an Mint zu liegen nach dem was wp_xyz sagt.

Winni

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

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

Beitrag von wp_xyz »

wp_xyz hat geschrieben:
Mi 2. Jun 2021, 16:47
Hab gerade kein Mint zur Hand, aber mit Ubuntu 20.10 is alles ok.
Muss mich korrigieren: der Lazarus auf dem Ubuntu war mit qt5 gebaut. Mit gtk2 und gtk3 (auf Manjaro) sehe ich dasselbe Verhalten wie Mathias.

Mathias
Beiträge: 6210
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 »

Sowas ist echt mühsam, da nimmt man extra "Courier", weil es ein monospace Font ist, welcher unter Windoof und Linux vorhanden ist.
Was gäbe es für einen Alternativ Monospace Font, welcher auf allen OS geht ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6210
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 noch etwas entdeckt, wen ich die Schriftart im Objectinspector bei Name in der ComboBox ändern will, habe ich "Courier" gar nicht zur Auswahl.
Ebenso fehlt in LibreOffice diese Schrifart auch.
Auch in der Schrifteinstellung der Lazarus-IDE fehlt diese Schrift. Für den Post weiter oben, hatte ich "Courier" Selbst rasch in das Feld geschrieben.

Somit scheint es an meinem OS zu liegen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 834
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:
Mi 2. Jun 2021, 17:19
Somit scheint es an meinem OS zu liegen.
Zwei Punkte, die du hier beachten musst:

1. Das was du hier mit dem ersetztem Nr. siehst, ist eine sogenannte Ligatur. Das heißt der Fontrenderer bekommt zwar Nr. als Text, aber in der Font ist hinterlegt, dass diese Kombination an Zeichen anders dargestellt werden soll. In manchen Sprachen (wie Arabisch) werden diese intensiv genutzt, aber auch in westlichen Sprachen findet man einige. Gibt zum Beispiel auch Fonts für Quelltext, welche Ligaturen für verschiedene übliche Operatoren (z.B. ->, ++, :=) anbietet. Ein Beispiel dafür ist Microsofts Cascadia Code. Oder man kann auch lustige Sachen damit machen, wie eine Font, die wie von Geisterhand Wörter „zensiert” (siehe hier).
Um auf das eigentliche Problem zurück zu kommen: ich weiß nicht, ob das Zeichnen von Ligaturen für
Komponenten trivial abgeschalten werden kann.

2. Wie du festgestellt hast, ist keine „Courier” Font in der Liste. Trotzdem funktioniert dein Programm. Das liegt daran, dass auf Linux mit Hilfe von FontConfig ein möglichst naher Kandidat ermittelt wird (ich nehme an Windows und macOS arbeiten dabei ähnlich). Wenn ich auf meinem Linux fc-match Courier mache, dann bekomme ich Nimbus Mono PS zurück. Wenn ich mir diese mit Hilfe von z.B. Font Manager anschaue, dann hat diese tatsächlich eine Ligatur für Nr..
Letztlich heißt das du kannst nie hundertprozentig davon ausgehen, dass eine Font, die du willst, auch tatsächlich vorhanden ist (außer vielleicht du hast dann ein Package für die verschiedenen Distributionen, welche dann die passenden Fonts als Abhängigkeiten hat)
FPC Compiler Entwickler

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

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

Beitrag von Winni »

Hi!

Stackexchange weiss die Antwort:

https://unix.stackexchange.com/question ... how-to-fix

Winni

PascalDragon
Beiträge: 834
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 »

Winni hat geschrieben:
Do 3. Jun 2021, 19:00
Stackexchange weiss die Antwort:

https://unix.stackexchange.com/question ... how-to-fix
Die Lösung ist aber nicht unbedingt hilfreich, wenn du dein Programm von Usern installieren lassen möchtest. Es kann schließlich sein, dass der User tatsächlich Courier installiert hat.
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 »

Hilft Dir leider zwar kaum weiter, ... aber ich habe das gleiche Problem seit der vorletzten FF-Version mit meinen Browser. Auf manchen Internetseiten ändert es dort in den Textfelder mein Nr. in dieses No mit Strich über den o um. Und das sogar sofort nach dem 'Nr.', also sogar ohne Leerzeichen, geschrieben habe. In Lazarus kann ich das Problem nicht reproduzieren. Auch nicht in LibreOffice. Allerdings habe ich auch nicht die Font Courier ... was mich wundert ...? (Vielleicht wurde da auch was Zeitgleich mit dem Fehler was an den Fonts geändert, ohne das ich es mitbekam?)
Lazarus 2.2.0 / FP 3.2.4

PascalDragon
Beiträge: 834
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, 12:02
Hilft Dir leider zwar kaum weiter, ... aber ich habe das gleiche Problem seit der vorletzten FF-Version mit meinen Browser. Auf manchen Internetseiten ändert es dort in den Textfelder mein Nr. in dieses No mit Strich über den o um. Und das sogar sofort nach dem 'Nr.', also sogar ohne Leerzeichen, geschrieben habe. In Lazarus kann ich das Problem nicht reproduzieren. Auch nicht in LibreOffice. Allerdings habe ich auch nicht die Font Courier ... was mich wundert ...? (Vielleicht wurde da auch was Zeitgleich mit dem Fehler was an den Fonts geändert, ohne das ich es mitbekam?)
Genau hierfür kannst du dir den Link anschauen, den Winni gefunden hat. Das ist nur leider keine allgemeine Lösung.
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:
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.?

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.
Lazarus 2.2.0 / FP 3.2.4

Antworten