[Lazarus-es] Graficos: ttf que no está en el Sistema

José Mejuto joshyfun en gmail.com
Mie Feb 11 15:26:39 CET 2015


El 11/02/2015 a las 12:34, Juan M. Puertas escribió:
> ​Hola.
> He hecho una aplicación que dibuja en un TImage una serie de canvas con
> elipses, líneas, etc. y quisiera añadir unos símbolos de una fuente ttf
> que no está en el Sistema.

Hola,

Tienes dos opciones, la "sencilla" es usar la unit freetype o 
LazFreeType http://wiki.lazarus.freepascal.org/LazFreeType

La "complicada" es que para usar una font en Windows has de registrarla 
en el sistema, lo que es básicamente lo mismo que instalar la fuente, 
pero puedes hacerlo de modo temporal, esto es, que el registro sólo es 
válido mientras tu programa esté en ejecución y se desregistra al salir. 
Además no necesita que la fuente esté en Windows\fonts si no que puede 
estar donde tu quieras.

El primer modo es multiplataforma, el segundo sólo Windows.

Sólo para Windows sería algo como esto, en versión simplificada.

procedure TForm1.FormCreate(Sender: TObject) ;
begin
   AddFontResource('c:\FONTS\MyFont.TTF') ;
   SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

// Al cerrar el form principal!
procedure TForm1.FormDestroy(Sender: TObject) ;
begin
   RemoveFontResource('C:\FONTS\MyFont.TTF') ;
   SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

Aunque yo lo haría en el lpr, no en el form, para que la fuente esté 
disponible para todos los forms, y lo protegería con un try...finally.

-- 





More information about the Lazarus-es mailing list