Eine weitere Möglichkeit eine Font in einer .exe abzulegen wäre so...
So kann keiner auf die schnelle die Font extrahieren da sie nun nicht mehr in Resource liegt.
Anleitung:
kopiert die Font in Euer Projekt-Root rein.
entpackt die Datei im Anhang auch dahin.
öffnet eine CMD und ruft bin2inc "Name der Font-Datei" auf.
nun solltet ihr eine "Dateiname.inc" erhalten haben.
für dieses Beispiel nehmen wir an Datei lautet MyFont.ttf die nun MyFont.inc geworden ist und in der das Array auch so heißt.
ihr könnt/müßt sogar manchmal die .inc umbennen und bearbeiten wenn original dateiname als array-bezeichner unzulässig ist.
bin2inc ist halt für generellen krams da, nicht explizit für font integration.
startet Delphi mit Eurem Projekt.
fügt unter
implementation
diese zeile ein:
{$I MyFont.inc}
nun brauchen wir auch noch eine funktion die uns die font bereit stellt, das mache ich so:
Delphi-Quellcode:
function LoadInternalFont: THandle;
var
FontsCount : DWORD;
begin
Result := AddFontMemResourceEx(@MyFont, Length(MyFont), nil, @FontsCount);
end;
ersetzt halt "MyFont" mit euren namen.
so hier könnte man es benutzen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
FontHandle := LoadInternalFont;
if FontHandle <> 0 then Label1.Font.Name := 'Name der Font?';
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
RemoveFontMemResourceEx(FontHandle);
end;
edit
ps:
nicht erschrecken, dateigröße von .inc ist idR sehr viel größer aber keine bange, im kompilat ist es wieder binär.
also größentechnisch ist da kein doller unterschied ob per resource oder intern/direkt in .exe