Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing) (https://www.delphipraxis.net/196786-kundenspezifischer-font-und-schlechte-darstellung-der-vcl-swing.html)

Bernhard Geyer 20. Jun 2018 07:44

Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Liste der Anhänge anzeigen (Anzahl: 2)
Wir haben vom Kunden einen Font bekommen und sollen diesen in der Anwendung unterstützen.
Jedoch schaut die Anwendung damit sehr schlecht aus. Wir der Font in MS Word/Excel verwendet, so ist die Darstellung erheblich besser.
Die Eigenschaften des Font (Schriftschnitt, Einbindbarkeit) unterscheidet sich auch von den üblicherweis (Tahoma, Segoe UI) verwendeten Schriftarten.

Kann es sein das manche Schriften in Word/Excel genau deshalb besser aussehen als in Delphi-VCL/Java-Swing?

Namenloser 20. Jun 2018 08:55

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Ich weiß nicht, ob es hilft, aber mir fällt auf, dass rechts Subpixel-Antialiasing (ClearType) aktiviert ist und links nicht. Es sieht außerdem so aus, als ob Hinting im Spiel ist. Möglicherweise ist die Schriftart nicht wirklich auf Bildschirmdarstellung ausgelegt.

Du könntest mal versuchen, die Schrift manuell mit CreateFont zu erzeugen und mit den Quality- und OutputPrecision-Parametern herumzuspielen. Probier z.B. mal ANTIALIASED_QUALITY oder PROOF_QUALITY und OUT_PS_ONLY_PRECIS oder OUT_TT_ONLY_PRECIS.

Erfahrung habe ich damit keine, aber das wäre mein Ansatz.

Bernhard Geyer 20. Jun 2018 09:00

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Zitat:

Zitat von Namenloser (Beitrag 1405268)
Ich weiß nicht, ob es hilft, aber mir fällt auf, dass rechts Subpixel-Antialiasing (ClearType) aktiviert ist und links nicht. Es sieht außerdem so aus, als ob Hinting im Spiel ist. Möglicherweise ist die Schriftart nicht wirklich auf Bildschirmdarstellung ausgelegt.

Beide Screenshots sind auf den gleichen Rechner gemacht. D.h. von Windows-Einstellung ist die gleiche. ClearType ist aktiviert.

Zitat:

Zitat von Namenloser (Beitrag 1405268)
Du könntest mal versuchen, die Schrift manuell mit CreateFont zu erzeugen und mit den Quality- und OutputPrecision-Parametern herumzuspielen. Probier z.B. mal ANTIALIASED_QUALITY oder PROOF_QUALITY und OUT_PS_ONLY_PRECIS oder OUT_TT_ONLY_PRECIS.

So wie ich das Beispiele sehe müsste man dann an vielen Stellen im Programm eingreifen.
Lohnt sich hier nicht. Wenn ich dem Kunde aufgrund sagen könnte "Font nicht nutzbar da ihm die Eigenschaft x/y/z für die Nutzung in Anwendungen fehlt" würde auch genügen.

KodeZwerg 20. Jun 2018 09:09

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1405270)
Beide Screenshots sind auf den gleichen Rechner gemacht. D.h. von Windows-Einstellung ist die gleiche. ClearType ist aktiviert.

Ist das eine Vermutung? Fontauswahl-Dialog beinhaltet kein AntiAliased/ClearType etc.

TiGü 20. Jun 2018 09:14

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Habt ihr nur eine TTF dazu bekommen?
Ggf. müsst ihr noch die anderen zur Schriftfamilie zugehörigen Schriftschnitte/-Arten dazu installieren?
https://www.fontpalace.com/search.ph...arch_bt=search

KodeZwerg 20. Jun 2018 09:23

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1405270)
So wie ich das Beispiele sehe müsste man dann an vielen Stellen im Programm eingreifen.

Eigentlich weist man eine Font ein Handle nur einmal zu, irgendwie verstehe ich die Aussage nicht.

Namenloser 20. Jun 2018 10:08

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1405270)
Beide Screenshots sind auf den gleichen Rechner gemacht. D.h. von Windows-Einstellung ist die gleiche. ClearType ist aktiviert.

Ich meinte beim Rendern, nicht die Systemeinstellung. Der Dialog von Windows wird vermutlich eine andere API benutzen wie GDI+ oder DirectWrite.

Nicht alle Fonst werden auf die gleiche Weise gerendert. Man sieht das z.B. auch ab und zu im Webbrowser bei bestimmten OpenType-Fonts, die nur mit Graustufen-Antialiasing statt Subpixel-Antialiasing gerendert werden.

Font-Rendering ist eine Wissenschaft für sich und die Unterstützung von Features variiert von Format zu Format und Engine zu Engine. Es gibt außerdem noch Ersetzungsregeln. Z.B. wenn eine Schriftart fehlt, oder ein Symbol in der Schriftart fehlt, oder nicht kompatibel ist, dann wird die Schrift oftmals still durch eine "ähnliche" Schriftart ersetzt. Auch das könnte bei dir der Fall sein.

Wer schon mal unter Linux versucht hat, anständiges Font-Rendering zu konfigurieren, kennt das alles. Unter Windows bekommt man es nicht so mit.

Bernhard Geyer 20. Jun 2018 10:18

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Zitat:

Zitat von KodeZwerg (Beitrag 1405273)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1405270)
So wie ich das Beispiele sehe müsste man dann an vielen Stellen im Programm eingreifen.

Eigentlich weist man eine Font ein Handle nur einmal zu, irgendwie verstehe ich die Aussage nicht.

Du hast einen Font-Handle. Und dann. Um ihn zu nutzen musst du ihn mit SelectObject zuweisen. Und zwar überall wo du ihn benögist.
Bisher ist die Logik bei allen Controls Font.Name zu setzen (VCL). Auf Java-Ebene vermutlich was ähnliches.

KodeZwerg 20. Jun 2018 10:21

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1405282)
Du hast einen Font-Handle. Und dann. Um ihn zu nutzen musst du ihn mit SelectObject zuweisen. Und zwar überall wo du ihn benögist.
Bisher ist die Logik bei allen Controls Font.Name zu setzen (VCL). Auf Java-Ebene vermutlich was ähnliches.

Bei Vcl genügt es dem Parent ein Font zuzuweisen und alle Childs nutzen den dann.

Bernhard Geyer 20. Jun 2018 14:46

AW: Kundenspezifischer Font und schlechte Darstellung in der VCL (Swing)
 
Zitat:

Zitat von KodeZwerg (Beitrag 1405284)
Bei Vcl genügt es dem Parent ein Font zuzuweisen und alle Childs nutzen den dann.

Nur wenn Parentfont = True ist.
Und selbst dann nich wenn Controls sowas wie "UseSystemFont" haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz