Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Font iz resurs fajla

[es] :: Pascal / Delphi / Kylix :: Font iz resurs fajla

[ Pregleda: 1316 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Milosevic

Član broj: 67
Poruke: 908
*.dynamic.isp.telekom.rs.



+30 Profil

icon Font iz resurs fajla11.07.2016. u 10:03 - pre 51 meseci
Kako u Delphiju u programu ucitati font iz resursa, tako da ne mora da se sam font instalira na racunar korisnika.
Nešto sam gledao na internetu, ali nisam našao primenjivo objašnjenje.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 790
*.e-info.ba.



+61 Profil

icon Re: Font iz resurs fajla11.07.2016. u 14:57 - pre 51 meseci
Ne znam da l je to uopste moguce.
Font je sistemski resurs (nesto kao standardne Win kontrole), i ispis text-a u zeljenom fontu bez instaliranja istog ne znam kako bi se dao izvesti.

Druga stvar je ako na masini koja ima instaliran zeljeni font (pozeljno fixedwidth) napravis bitmape za svako slovo, pa to zatim spakujes u resurs. Ispisivanje text-a (na drugoj masini koja nema taj font) se svodi na crtanje slicica/slova, i daleko je brze nego klasican ispis text-a fontom. (govorim iz iskustva, poodavno radio neki ispis brojaca sa 6 ogromnih cifara na opisani nacin; munjevito je!)

Pozz
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 908
*.dynamic.isp.telekom.rs.



+30 Profil

icon Re: Font iz resurs fajla11.07.2016. u 15:15 - pre 51 meseci
Pa rešio sam ovo delimicno. Odnosno izvadim font iz resursa, snimim na hdd i odatle ga instaliram za moju aplikaciju i ovo radi.
Ono što bih hteo je da izbegnem snimanje fonta na hdd.

Code:
 procedure UcitajResursniFont;
 var
     MojStream : TResourceStream;
     Lokacija:String;
 Begin
     MojStream := TResourceStream.Create(Hinstance , 'AZ' , RT_RCDATA);
     Lokacija:= ExtractFilePath( Application.ExeName);
      Lokacija:= Lokacija+'Azbuka03_D.ttf';
     if not  FileExists(Lokacija) then
       MojStream.SaveToFile(Lokacija);
       AddFontResource(PChar(Lokacija)); 
      SendMessage(Application.Handle ,WM_FONTCHANGE,0,0); 
     MojStream.Free;
 End;


Za brisanje Fonta nakon zatvaranja aplikacije
Code:

 Procedure BrisiResursniFont(Brisi_sa_HDD:Boolean = true);
var
   Lokacija:String;
begin
  Lokacija:= ExtractFilePath( Application.ExeName);
  Lokacija:= Lokacija+'Azbuka03_D.ttf';
  if not RemoveFontResource(PChar(Lokacija)) then ShowMessage('Nije uklonjen');
  if  FileExists(Lokacija)AND Brisi_sa_HDD then DeleteFile(Lokacija);
  SendMessage(Application.Handle ,WM_FONTCHANGE,0,0);
end;


Posle u kodu

Memo1.Font.Name:='Azbuka03_D.ttf';
mislim da bi funkcija AddFontMemResourceEx trebala da resi problem

pozz




[Ovu poruku je menjao Milan Milosevic dana 12.07.2016. u 10:13 GMT+1]
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 790
*.e-info.ba.



+61 Profil

icon Re: Font iz resurs fajla12.07.2016. u 08:50 - pre 51 meseci
I prva i druga funkcija UPRAVO rade instalaciju fonta na masinu/sistem.
A na pocetku si napisao "tako da ne mora da se sam font instalira na racunar korisnika".

Pozz
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 908
*.dynamic.isp.telekom.rs.



+30 Profil

icon Re: Font iz resurs fajla12.07.2016. u 09:33 - pre 51 meseci
Evo verzije bez snimanja fonta na HDD.

Code:
Function UcitajResursniFont(Resurni_naziv:String):THandle;
 var
     MojStream : TResourceStream;
     BrojFontova : integer;
 Begin
  // 'AZ'  je naziv resursnog fonta Azbuka03_D videti resues.rc
     MojStream := TResourceStream.Create(Hinstance , Resurni_naziv , RT_RCDATA);
     BrojFontova:=1;
     Result:=AddFontMemResourceEx(MojStream.Memory, MojStream.Size, nil, @BrojFontova);
     MojStream.Free;
 End;


Za oslobadanje fonta iz memorije
Code:
 Function BrisiResursniFont(Handle_Fonta:THandle):Boolean;
begin
   Result:= RemoveFontMemResourceEx(Handle_Fonta)
end;


prva funkcija vraća handle ubačenog fonta u memoriju. Ukoliko vrati vrednost 0 tada nešto nije u redu.

Druga funkcija oslobađa font iz memorije. Ako je uspešno izvršena vraća true.

P.S.

Ovde na instaliranje fonta mislim na ručno instaliranje od strane korisnika ukoliko dati font već nije instaliran na računaru.
Ovako se sve dešava u pozadini. Mada nisam siguran da se ovim font instalira za ceo sistem jer nije prepoznatljiv kod drugih aplikacija. Dok moja aktivna aplikacija lepo prepoznaje instalirani font.

[Ovu poruku je menjao Milan Milosevic dana 12.07.2016. u 11:29 GMT+1]
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 790
*.e-info.ba.



+61 Profil

icon Re: Font iz resurs fajla14.07.2016. u 09:15 - pre 51 meseci
Pogledaj, sve lepo kaze:

https://msdn.microsoft.com/en-...top/dd183325%28v=vs.85%29.aspx (ovo je za font iz memorije, uvek private)

i ovo

https://msdn.microsoft.com/en-...top/dd183327%28v=vs.85%29.aspx (font iz fajla, private ili public)

Pozz

P.S. I hvala za topic, covek uvek nauci nesto novo
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Font iz resurs fajla

[ Pregleda: 1316 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.