Font Datei.ttf

Für Installationen unter Windows
hbr
Beiträge: 285
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Font Datei.ttf

Beitrag von hbr »

Ich habe alle Möglichkeiten der Namensgebung ausprobiert, irgendwie will der Compiler das nicht. Vielleicht weil meine Main schon 1000000 bit Grösse hat.
Aber egal, habe die Fontdatei jetzt in ein Verzeichnis abgelegt und lade sie nach, wenn sie nicht auf dem Rechner ist.

Nochmals vielen Dank für eure Hilfe.

Gruß

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Font Datei.ttf

Beitrag von PascalDragon »

Zeig doch mal genauer, was du hast. Das folgende Beispiel funktioniert bei mir:

tfontres.pp

Code: Alles auswählen

program tfontres;

{$mode objfpc}{$H+}

uses
  resource, Classes;

{$R font.rc}

var
  res: TResourceStream;
begin
  res := TResourceStream.Create(hInstance, 'Font', 'RF'); // oder auch PChar('RF') - das ist egal!
  try
    Writeln(res.Size);
  finally
    res.Free;
  end;
end.
font.rc

Code: Alles auswählen

Font RF "testfont.ttf"
Das ganze funktioniert auch, wenn ich eine normale Anwendung in Lazarus erstelle und den Code dort rein pflanze.
FPC Compiler Entwickler

hbr
Beiträge: 285
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Font Datei.ttf

Beitrag von hbr »

OK, noch einmal nachgeschaut.
Ist schon seltsam!
Nachdem ich die Unit "resources" eingefügt habe funktionierte es.
Habe sie dann wieder entfernt,
weil ich schon LResources drin hatte, trotzdem hat es dann weiterhin funktioniert.
So habe ich es dann gemacht.

Code: Alles auswählen

 if Screen.Fonts.IndexOf('Schriftname') <> -1 Then
      Begin
       res := TResourceStream.Create(hInstance, 'Font', 'RF');
       res.Free;
       AddFontResource(PChar('testschrift.ttf'));
       SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
       IstFont := true;
      end;    
Nochmals Danke!

Gruß

hbr
Beiträge: 285
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Font Datei.ttf

Beitrag von hbr »

Genau wie ich es gedacht habe.
Die Datei wird bei:
AddFontResource(PChar('testfont.ttf'));
aus dem Programmverzeichnis gelesen.
Wie deklariere ich es, damit die Datei aus 'res' gelesen wird?
Ich möchte ja die Rsource verwenden und nicht über eine Save Funktion erst irgendwo sie Fontdatei ablegen.
Dann kann ich sie auch Direkt auf den Datenträger ablegen, ohne den Umweg.
Das bringt dann überhaupt nichts.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Font Datei.ttf

Beitrag von sstvmaster »

Hmm, ich weis jetzt zwar nicht ob meine Test jetzt das ist was du brauchst, aber mal sehen.

Den font der im Test genutzt werden soll muss man im Projekt eintragen:
- Projekt -> Projekteinstellungen... -> Resourcen
- Dann auf hinzufügen -> rechts unten (All files (*.*)) -> Font wählen (Öffnen) -> OK

Im FormCreate:
- LoadResourceFontByName = Resourcenname
- Font.Name = Der Font Name wie er richtig heisst.

Unter Windows einfach doppelklick auf die ttf und links oben steht dann der Schriftname.

Compilieren und freuen.
Dateianhänge
project1.zip
(165.49 KiB) 81-mal heruntergeladen
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

hbr
Beiträge: 285
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: Font Datei.ttf

Beitrag von hbr »

Vielen Dank für die Mühe.

Antworten