Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Font/Schriftart in projekt einbinden (https://www.delphipraxis.net/75202-font-schriftart-projekt-einbinden.html)

Skullschildi 15. Aug 2006 20:36


Font/Schriftart in projekt einbinden
 
Hallo, ich hab da so ein programm im sinn, das eine spezielle schriftart verwendet. die ist nicht auf jedem rechner verfügbar und deshalb denk ich wird wohl ein standart eingestellt. Wie kann ich die schriftart in mein programm einbauen, sodass sie auf jedem rechner zumindest in diesem programm funktioniert.

fkerber 15. Aug 2006 20:40

Re: Font/Schriftart in projekt einbinden
 
Hi!

Unabhängig von der Methode des Einbindens würde ich lizenzrechtliche Bedenken einwerfen. Sehr viele Schriftarten sind geschützt. Sollte das bei dir zutreffen, würde ich vom Einbinden absehen. Denn das was eingebunden ist, kann man auch extrahieren, oder?


Ciao, Frederic

Skullschildi 15. Aug 2006 20:58

Re: Font/Schriftart in projekt einbinden
 
die rechtlichen bedenk lass mal meine bedenken sein. die schriftart ist aus einer öffentlichen quelle, kostenlos.

Nils_13 15. Aug 2006 21:05

Re: Font/Schriftart in projekt einbinden
 
Es müsste reichen die Schriftart in den Programmordner zu kopieren. Vielleicht musst du es noch via Code laden. Ohne Gewähr. Extrahieren würde ich nicht empfehlen, da es viele nicht mögen, wenn etwas im system32-Verzeichniss verändert wird.

Skullschildi 15. Aug 2006 21:09

Re: Font/Schriftart in projekt einbinden
 
eigentlich wollte ich eine lösung mit einer art .res datei. das programm soll nur aus einer exe bestehen.

kann ich die schriftarten einfach so laden? nach dem motto
Zitat:

label1.font(loadfromfile'C:/ordner/schriftart.ttf');
bzw aus nem recourcestream?

xaromz 15. Aug 2006 21:35

Re: Font/Schriftart in projekt einbinden
 
Hallo,

wie wäre es damit: Du extrahierst den Font in eine temporäre Datei und registrierst ihn. Beim Beenden des Programms deregistrierst Du den Font wieder und löschst die Datei.

Hier dazu ein paar Code-Schnipsel:
Delphi-Quellcode:
function GetTempFile: WideString; // Temporären Dateinamen erzeugen
var
  Buffer: WideString;
begin
  SetLength(Buffer, MAX_PATH);
  GetTempPathW(MAX_PATH - 1, PWideChar(Buffer));
  GetTempFileNameW(PWideChar(Buffer), '', 0, PWideChar(Buffer));
  Result := PWideChar(Buffer);
end;

procedure AddFontRes(const FileName: WideString);
begin
  AddFontResourceW(PWideChar(FileName)); // Font registrieren
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); // Alle benachrichtigen
end;

procedure RemoveFontRes(const FileName: WideString);
begin
  if RemoveFontResourceW(PWideChar(FileName)) then // Font deregistrieren
  begin
    SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); // Alle benachrichtigen
    DeleteFileW(PWideChar(FileName)); // Font löschen
  end;
end;
Das Extrahieren aus der Ressource und das Speichern in eine Datei fehlt hier, ist aber mit TRessourceStream recht einfach.

Gruß
xaromz

ManuMF 16. Aug 2006 10:08

Re: Font/Schriftart in projekt einbinden
 
Zitat:

Zitat von xaromz
Das Extrahieren aus der Ressource und das Speichern in eine Datei fehlt hier, ist aber mit TRessourceStream recht einfach.

Code dafür siehe hier.


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