Vous devez énumérer toutes les polices dans le système:
procedure TPDFFontMapper.EnumFonts;
var
LF: TLogFont;
begin
System.FillChar(LF, sizeof(LF), 0);
LF.lfCharSet := DEFAULT_CHARSET;
FDC := CreateCompatibleDC(0);
try
Windows.EnumFontFamiliesEx(FDC, LF, @EnumFFProc, Integer(Self), 0);
finally
Windows.DeleteDC(FDC);
end;
end;
Vous devriez avoir une fonction qui est appelée pour chaque police et tester si elle est une police vectorielle (les deux polices TrueType et OpenType sont considérés comme des polices TrueType) :
function EnumFFProc(const LogFont: TEnumLogFontEx; const TextMetric: TNewTextMetric; FontType: DWORD; LParam: DWORD): Integer; stdcall;
begin
if FontType and TRUETYPE_FONTTYPE = TRUETYPE_FONTTYPE then
// do sometghing useful with the logfont...
Result := 1;
end;
Que sont les polices GDI +? Pourriez-vous expliquer s'il vous plaît? Je connais les polices TrueType, Type1 et OpenType. Si vous voulez ceux-ci, je peux vous fournir un morceau de code. –
La police dans ce cas est rendue dans dxscene par GDI +. Mais seules les polices qui peuvent être rendues par GDI + sont supportées - je veux savoir comment les identifier – Cruachan