Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Was passiert, wenn Schriftart nicht vorhanden ist? (https://www.delphipraxis.net/179816-passiert-wenn-schriftart-nicht-vorhanden-ist.html)

greenmile 4. Apr 2014 07:56

Was passiert, wenn Schriftart nicht vorhanden ist?
 
Hallo,

ich habe die Frage ja schon an anderer Stelle gestellt, leider ohne Antwort. Wenn ich mein Projekt auf die Schrift "Segoe UI 9 pt" umstelle und auf dem Zielsystem diese Schriftart nicht existiert, was passiert dann? Gibt es einen "Plan B", also sowas wie "Screen.AltFont := "?

himitsu 4. Apr 2014 08:18

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Was? Probier es doch aus.
Einfach irgendeinen Fantasienamen bei Font.Name eingeben und fertig.

Es gibt ja nur zwei Möglichkeiten:
- beim Laden wird der "ungültige" Fontname nicht angenommen und die vorher eingestellte Schrift bleibt unverändert (das wird dann wohl eine Standardschrift sein)
- der ungültige Name wird angenommen und es wird als Ersatz eine Standardschrift vom Windows verwendet

Du kannst ja in Screen.Fonts nachsehn, ob die existiert und wenn nicht, dann schreibst du überall deine Alternative rein.

greenmile 4. Apr 2014 09:43

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Hmmm ... hat noch niemand damit Erfahrungen gemacht?

Neutral General 4. Apr 2014 09:45

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Probiers doch einfach aus :roll:
Ist ne Sache von 5 Minuten.

Union 4. Apr 2014 09:47

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Willst Du etwa dass FMX auf dem Mac wie ein Mac-Programm aussieht - das wäre ja ein Sakrileg! Dann musst Du folgende Schriftarten verwenden, evtl. mit {ifdef} in die Font.Family eintragen:
  • "System" 13 für Edits und Buttons
  • "Label" 10 für normale Label
  • "Title" 13 Für größere Label

greenmile 4. Apr 2014 09:52

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Nein es geht um VCL. Ich habe jetzt eine ungültige Schriftart genommen (die berühmte "Fadsouewhk") und es wird eine Standard-Schrift genommen (welche auch immer). Die Frage ist jetzt, ob ich das irgendwie beeinflussen kann.

Nachtrag: Hier ist die Lösung bzw. die Erklärung: http://www.delphipraxis.net/157257-v...rledigt**.html

Neutral General 4. Apr 2014 09:59

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Zitat:

Zitat von greenmile (Beitrag 1254613)
Nein es geht um VCL. Ich habe jetzt eine ungültige Schriftart genommen (die berühmte "Fadsouewhk") und es wird eine Standard-Schrift genommen (welche auch immer). Die Frage ist jetzt, ob ich das irgendwie beeinflussen kann.

Ja kannst du indirekt:
Zitat:

Zitat von himitsu
Du kannst ja in Screen.Fonts nachsehn, ob die existiert und wenn nicht, dann schreibst du überall deine Alternative rein.


Der schöne Günther 4. Apr 2014 10:08

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Also ich würde mich jetzt aber auch fragen, was den in aller Welt genommen wird: Die glorreiche Dokumentation spricht
Zitat:

Anmerkung: Wenn die Kombination aus der Schriftenfamilie und der Schriftattribute (wie z.B. fett oder kursiv) eine Schrift definiert, die nicht auf dem System verfügbar ist, wird eine andere Schrift verwendet.
Ich habe etwas gewühlt, in Vcl.Graphics noch
Delphi-Quellcode:
  DefFontData: TFontData = (
    Handle: 0;
    Height: 0;
    Orientation: 0; { No rotation }
    Pitch: fpDefault;
    Style: [];
    Charset : DEFAULT_CHARSET;
    Name: 'MS Sans Serif');
gefunden, aber ganz wie MS Sans Serif sieht es auch nicht aus...

Durchsteppen mit dem Debugger beim Ändern zur Laufzeit hat mich auch nicht weitergebracht...

Bernhard Geyer 4. Apr 2014 10:14

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Ab Win2000 ist "Tahoma" vorhanden. Ab Vista "Segoe UI".

Sollten diese Schriftarten nicht vorhanden sein hat der User eh ein Problem mit seinem Windows ...

Ansonsten frag doch ab welche Schriftart eingestellt ist.

greenmile 4. Apr 2014 10:46

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1254617)
Sollten diese Schriftarten nicht vorhanden sein hat der User eh ein Problem mit seinem Windows ...

Wieso das? Ich gebe im Designer für manche Buttons und Labels eine andere Schriftart vor, z.B. in meiner Form mal Verdana, mal Segoe UI. Unter XP sieht es ... irgendwie aus.

mkinzler 4. Apr 2014 10:48

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Er meint, wenn die Standardschriften von Windows fehlen

greenmile 4. Apr 2014 11:03

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Ach so, ok

Popov 4. Apr 2014 11:54

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Zitat:

Zitat von greenmile (Beitrag 1254595)
Hallo,

ich habe die Frage ja schon an anderer Stelle gestellt, leider ohne Antwort. Wenn ich mein Projekt auf die Schrift "Segoe UI 9 pt" umstelle und auf dem Zielsystem diese Schriftart nicht existiert, was passiert dann? Gibt es einen "Plan B", also sowas wie "Screen.AltFont := "?

Jajn. Ich hab das mal schon durchgespielt, weil ich es auch brauchte. Die Standardschrift ist "MS Sans Serif". Gibst du den Namen einer Schrift die es nicht gibt, wird erst einmal die letzte gültige Schrift genommen.

Allerdings mit diesem Verhalten (zumindest bei mir bisher): ist am Anfang "MS Sans Serif" eingestellt und du gibst "" ein, wird "MS Sans Serif" genommen. Gibst du "Blabla" (also eine Schrift die es nicht gibt) wird, zumindest bei XP, Tahoma genommen. Das ist die Standardschrift die eingestellt ist. Ist eine andere eingestellt, wird vermutlich die genommen. Gibst du noch mal "", bleibt es bei Tahoma. Gibt man nach Tahoma "Times New Roman" ein und dann "Blabla", bleibt Times New Roman", als letzte funktionierende Schrift.

Willst du die Möglichkeiten von HTML, also Alternativschriften, ich benutze schon lange (gelegentlich in abgewandelter Form) so eine Prozedur:
Delphi-Quellcode:
procedure SetFont(Font: TFont);
const
  FontList: array[0..3] of String = ('Segoe UI', 'Courier New', 'Times New Roman', 'Arial1');
var
  i: Integer;
begin
  for i := Low(FontList) to High(FontList) do
    if Screen.Fonts.IndexOf(FontList[i]) > -1 then
    begin
      Font.Name := FontList[i];
      Break;
    end;
end;
Ist die erste Schrift nicht vorhanden, wird die zweite genommen, usw.

CocoPops 4. Apr 2014 13:13

AW: Was passiert, wenn Schriftart nicht vorhanden ist?
 
Zitat:

und auf dem Zielsystem diese Schriftart nicht existiert, was passiert dann? Gibt es einen "Plan B", also sowas wie "Screen.AltFont := "?
Die selbe Frage habe ich mir gestern auch gestellt und es getestet.

Ich meine es war die Schriftart Consolas mit Windows 7. (MEIN) Windows XP hat diese Schriftart nicht also wurde Lucida Console genommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 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