![]() |
Zu jedem Font verfügbare Grösse ermitteln!
Hi DP'ler,
wie ermittelt man zu einem Font die zur Verfügung stehenden Grössen? Grüsse Rainer |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Wozu benötigst du das? Da die meisten Windows Fonts TrueType-Fonts, also Vektorfonts, sind ist das imho nicht nötig, bzw. es gibt keine Größe.
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
Hi mkinzler,
ist ganz einfach ich will die Grösse einstellbar machen! Grüsse Rainer |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Aber Vektorfonts haben keine feste Größe, sondern sind in der Größe anpassbar
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
Hi mkinzler,
ich glaube wir reden aneinander vorbei! Wenn du Wordpad öffnest siehst du links oben die Schriftart. Direkt daneben wird die Schriftgrösse angezeigt. Genau um die geht es mir. Kann ich die willkürlich setzen? Kam mir bis jetzt immer so vor als sei das vorgegeben! Grüsse Rainer |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Der Standard-Fontdialog (wie er u.a. via OI in Delphi auch zu sehen ist) gibt doch schon die übliche Auswahl, und schränkt diese bei non-TTFs entprechend ein. Wenn du den Dialog an und für sich nicht benutzen magst, könnte man aus dessen Sourcen aber vermutlich was verwursten :)
Edit: Ja, du kannst sie völlig frei setzen - ausser bei nicht True-Type Fonts wie z.B. Terminal o.ä. Edit2: Bzw. kannst du da auch einen beliebigen Wert eingeben, das Ergebnis ist dann allerdings imho die nächste tatsächlich vorhandene Größe. |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Theoretisch ist bei Vektorfonts jede Größe möglich. U.U wirkt die Schrift dann gestaucht oder gequetscht
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
Hallo Hawkeye,
was dein Link soll weiss ich nicht hat aber mit dem Thema überhaupt nichts zu tun. Gegoogled hab ich auch schon sonst hätte ichs nicht ins Forum gesetzt. Grüsse rainer |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Sakrament luja,
ich will doch nur rausfinden welche Grössen wirklich möglich sind um sie aufzulisten. Ich keine true types nutzen keine skalierbare Schriften, ich will nur ganz normale Schrift. Und ich will auch den Standarddialog nicht benutzen. Ich werd mich da aber jetzt durchwurschteln (durch den Standarddialog). Grüsse und vielen dank Rainer |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Zitat:
Zitat:
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
Zitat:
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
Da wollen Dir Leute helfen, und Du reagierst so darauf... nicht nett!
Da steht doch ganz eindeutig Zitat:
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
![]() |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Hallo,
Zitat:
Zitat:
Gruß Hawkeye |
Re: Zu jedem Font verfügbare Grösse ermitteln!
@Medium
@MarioM Tut mir leid aber auch ich, habe das Here übersehen. Zitat:
(ich brauchte etwas mit fixedPitch) Gruß K-H |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Überlesen ist noch lange kein Grund jemanden anzufahren, der freiwillig und unentgeldlich Hilfe leistet. Dann frag ich freundlich nach, was ich evtl. übersehen habe auf der verlinkten Seite, aber doch nicht so.
Bevor ich eine empfohlene Quelle abtu, die mir ggf. die Arbeit erleichtert oder gar den Tag rettet, schau ich sie mir schon etwas genauer an. Zudem war die Rede von "hat aber mit dem Thema überhaupt nichts zu tun", was ja sogar was den direkten Link angeht schlicht nicht stimmt. Dort wurde nämlich genau das selbe gefragt; folglich hat der TE nichtmal ansatzweise darin gelesen. Und naja... TrueType ist seit wie vielen Jahren der Standard unter Windows? |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Zitat:
Zitat:
Zitat:
Hinterher wußte ich, daß ich die falschen Vokabeln genutzt habe, und daher nie die "richtige" Antwort bekommen habe. Und natürlich meine falsche Schlußfolgerung TruType=proportional. (Bei Microsoft gibt/gab es übrigens eine Doku zu TTF "www.microsoft.com/typography/tt/ttf_spec" ) Gruß K-H |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Hallo taaktaak,
danke dein Hinweis hat mir geholfen, das ist dabei rausgekommen:
Delphi-Quellcode:
Grüsse
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; imin,imax:integer; <<---hab ich auf die schnelle hinzugefügt. Hat im Original gefehlt implementation {$R *.dfm} procedure GetSizes(var List:TStringlist;FontName:String;Min,Max:Integer);<<--- im Orginal // list:tstrings hab ich durch var list:tstinglist ersetzt. Warum ist wohl klar var DC : HDC; LF : TLogFont; function EnumSize(var LogFont:TLogFont;var TextMetric:TTextMetric; FontType:Integer;Data:LParam):Integer; stdcall; const TTSizes : Array[0..15] of Integer = (8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72); var i,H : Integer; DC : HDC; begin if FontType=TrueType_FontType then begin // get sizes from const array for i:=0 to High(TTSizes) do if TTSizes[i]>=iMin then if TTSizes[i]<=iMax then TStrings(Data).Add(IntToStr(TTSizes[i])); Result:=0; end else begin // get sizes from WinAPI DC:=GetDC(0); try with TextMetric do H:=MulDiv(tmHeight-tmInternalLeading,72,GetDeviceCaps(DC,LogPixelsY)); // // folgende "Übersetzung" berechnet für Courier, 10 pts das falsche Ergebnis 9 pts // ist also NICHT äquivalent zu MulDiv() // // H:=((tmHeight-tmInternalLeading)*72) div GetDeviceCaps(DC,LogPixelsY); // if H>=TTSizes[0] then // no smaller size than MinSize of TrueType if H>=iMin then if H<=iMax then if TStrings(Data).IndexOf(IntToStr(H))<0 then TStrings(Data).Add(IntToStr(H)); Result:=1; finally ReleaseDC(0,DC); end; end; end; procedure SortList; var i : Integer; t : String; Done : Boolean; begin repeat Done:=true; for i:=0 to List.Count-2 do if StrToInt(List[i])>StrToInt(List[i+1]) then begin t :=List[i]; List[i] :=List[i+1]; List[i+1]:=t; Done :=false; end; until Done end; begin DC:=GetDC(0); iMin:=Min; iMax:=Max; if iMax=0 then iMax:=999; try fillchar(LF,SizeOf(LF),0); LF.lfCharSet:=Default_CharSet; Move(FontName[1],LF.lfFaceName,length(FontName)); List.BeginUpdate; List.Clear; EnumFontFamiliesEx(DC,LF,@EnumSize,LParam(List),0); Sortlist; List.EndUpdate; finally ReleaseDC(0,DC); end; end; procedure TForm1.Button1Click(Sender: TObject); var l:Tstringlist; begin l:=tstringlist.Create; GetSizes(L,'Arial',0,100); ListBox1.Items.Assign(l); l.free; end; end. Rainer Ps: An alle die sich hier durch meine Reaktion "angemacht" oder ungerecht behandelt fühlen: Es tut mir leid wenn ich jemanden ungerecht behandelt haben sollte. War vielleicht der Frust darüber, dass man komplexeste Sachverhalte, in relativ kurzer Zeit, einfach lösen kann und bei so einfachen Dingen wie der Fontgrösse fast kapitulieren muss. Die unsachlichen Bemerkungen in diesem Thread möchte ich nicht kommentieren! |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Zitat:
Nix für ungut, und ein wenig kann ich das ja verstehen wenn einen so "pisselige" Dinge Stunde um Stunde kosten. Da is am Riemen reißen ne Aufgabe... |
Re: Zu jedem Font verfügbare Grösse ermitteln!
Jetzt habt Euch wieder lieb und gut is :zwinker:
|
Re: Zu jedem Font verfügbare Grösse ermitteln!
Ich hab mich sowas von lieb, schon immer! :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz