PDA

Ver la Versión Completa : Archivo RES y fuente OTF


Jose Roman
26-08-2014, 20:59:40
Cordial saludo,

Deseo cargar una fuente OTF en mi aplicación por medio de una archivo RES, asi que por favor alguien que me indique que esto haciendo mal ya que no carga la fuente que deseo.

Esta es la estructura del archivo RC (el cual se llama Fuentes.rc):

1 RCDATA Hallo_sans.otf


Creo el archivo RES con el BRC32.exe:

brc32.exe -r -v Fuentes.rc


El codigo fuente es:

implementation

{$R *.dfm}
{$R Fuentes.res}

procedure TForm1.FormCreate(Sender: TObject);
var
Recursos: TResourceStream;
MiFuente: TFont;
begin
MiFuente := TFont.Create;
Recursos := TResourceStream.Create(hInstance,'#1',RT_RCDATA);
MiFuente.Charset := SYMBOL_CHARSET;
MiFuente.Name := 'HALLO';
Recursos.Free;
Label1.Font.Assign(MiFuente);
Label1.Font.Size := 16;
end;


He tratado pero no carga la fuente que deseo. Gracias de antemano.

ecfisa
26-08-2014, 21:04:28
Hola Jose Roman.

Revisa si te sirve este enlace: Embeber font en executable (http://www.clubdelphi.com/foros/showthread.php?p=466662)

Saludos :)

Edito: Ups! me apresuré, era otf. Probalo de ese modo por las dudas...

Jose Roman
26-08-2014, 21:43:31
Gracias por responder, pero no me da aun.. :(

ecfisa
26-08-2014, 21:55:29
Hola Jose.

A ver, proba de este modo:

procedure TForm1.FormCreate(Sender: TObject);
begin
AddFontResource('c:\pruebas\CourierStd-Oblique.otf') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
Label1.Font.Name:= 'CourierStd-Oblique';
Label1.Font.Size:= 13;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
RemoveFontResource('C:\pruebas\CourierStd-Oblique.otf') ;
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

En la prueba que realicé funcionó correcto, por lo que tendría que ser igual desde recurso.

Saludos :)

ecfisa
26-08-2014, 22:14:48
Hola de nuevo.

Por si te sirviera de ayuda te adjunto la prueba con el recurso incluido, crea una carpeta y descomprimí los archivos fuentes allí.


Saludos :)

Jose Roman
26-08-2014, 22:17:24
Gracias ya me funciono, pero me surge la siguiente duda, como no deseo que el usuario pueda utilizar el tipo de letra, como elimino el archivo generado sin que pase por la papelera de reciclaje? como en tu ejemplo se crea con la sentencia:

SavetoFile('CourierStd-Oblique.otf');

Jose Roman
26-08-2014, 23:30:53
Muchas gracias ecfisa, ya solucione la otra parte, tu aporte es de mucha ayuda.

ecfisa
26-08-2014, 23:43:25
Hola Jose Roman.

Esa línea me quedó de una prueba, podes eliminarla sin problemas.

Saludos :)