Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизКак узнать, TrueType шрифт или растровый? Найти похожие ветки
← →
cult (2002-10-15 17:29) [0]Вот и весь вопрос.
Для моих извращений растровые шрифты не годятся, поэтому мне их надо упорно игнорировать. Но как узнать?...
Спасибо.
← →
MBo (2002-10-15 17:34) [1]EnumFontFamilies
EnumFontFamProc
FontType
← →
cult (2002-10-15 17:40) [2]спасибо, пошел смотреть
← →
cult (2002-10-15 18:25) [3]чего-то не пашет вот такой текст :(
procedure TForm1.Button1Click(Sender: TObject);
var
Fonts : TStringList ;
LFont: TLogFont;
DC : HDC ;
begin
Fonts := TStringList.Create ;
Fonts.Sorted := True ;
DC := GetDC(Handle) ;
FillChar(LFont, SizeOf(LFont), 0);
EnumFonts(DC,nil, @TForm1.FontPerform, Pointer(Fonts));
ReleaseDC(Handle, DC) ;
end;
function TForm1.Fontperform(var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer):integer;
begin
Result:=1;
Showmessage(inttostr(textmetric.tmheight));
if (TextMetric.tmPitchAndFamily and TMPF_TRUETYPE) <> 0 then
TStrings(Data).Add(LogFont.lfFaceName);
Memo1.Lines.Assign(Data);
end;
При запуске ругается в самой callback на попытку обращения к TextMetric, т.е. уже ShowMessage не работает. Что тут не так?
← →
MBo (2002-10-15 18:39) [4]function EnumFntProc(var elf:TEnumLogFont;var ntm:TNewTextmetric;
FontType: dword ;strings:TStrings):integer; stdcall;
var s: string;
begin
if fonttype=TRUETYPE_FONTTYPE then begin
s:="TTF "+elf.elfFullName
end else
s:=elf.elfLogfont.lfFacename;
if (elf.elfLogFont.lfPitchAndFamily and FIXED_PITCH)=FIXED_PITCH
then s:="* Fixed * "+s;
strings.Add(S);
Result:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var sl:tstringlist;
i:integer;
begin
sl:=tstringlist.create;
sl.Assign(Screen.Fonts);
for i:=0 to sl.count-1 do
EnumFontfamilies(Canvas.Handle, PChar(sl[i]),@EnumFntProc,
Integer(ListBox1.Items));
sl.free;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c