Carregar e usar font - Visual Basic .NET - Portugal-a-Programar
Carregar e usar font
Por km92, 31 de Outubro de 2008 em Visual Basic .NET
Preciso de saber como faço para carregar uma font de uma pasta para a poder utilizar no programa, visto que a mesma não existe no computador onde quero usar o programa.
Tens aqui um exemplo bastante simples:
IO.File.Copy("c:\Ayuma2yk.ttf", "c:\windows\fonts\Ayuma2yk.ttf", True)
FontUtil.InstallFont("Ayuma2yk.ttf")
Public Class FontUtil
''' Instala a fonte no sistema
Public Shared Function InstallFont(ByVal FileName As String) As Boolean
InstallFont = AddFontResource(FileName) <> 0
''' Desinstala a fonte no sistema
Public Shared Function UninstallFont(ByVal FileName As String) As Boolean
UninstallFont = RemoveFontResource(FileName) <> 0
Não sei até que ponto isso será boa pratica, dependendo da forma como for utilizador. Se eu fosse utilizador de tal programa e viesse a descobrir que o programa me anda a instalar coisas no computador que eu não quero, não sei se ia gostar. Sim, é uma fonte, nada de mais, mas se a aplicação não for nada relacionada com desenho tipo Photoshop ou até mesmo o Word que instalam várias fontes (aqui não tenho nada contra) acho má politica a aplicação fazer isso sem o consentimento do utilizador.
E por um lado, se é uma fonte para ser usada no interface, então ai é que sou mais apologista que deves usar as fontes que vem com o sistema operativo que foram criadas com esse propósito. Permitindo assim um sistema consistente entre diversas aplicações. É só uma sugestão, sem saber qual o propósito da tua aplicação, a quem se destina e os requisitos. Mas penso que poderás evitar isso...
De qualquer forma, penso que a solução do jpaulino seja a única que podes usar. Se o que pretendes é ter a font na pasta da aplicação e carrega-la on-demand, penso que isso não é possível, mas não tenho a certeza.
E depois de ler isto tudo, reparei que o jpaulino também colocou código para eliminar a fonte. Bem, se a apagares depois de o programa terminar, talvez faça menos mal... Mas só mais uma nota, se a aplicação for para correr no Windows Vista, penso que precisas de privilégios de administrador para instalar fontes, mas mais uma vez, não tenho a certeza.
Concordo! Se for uma fonte especial para um logotipo(por exemplo) é preferivel criar a imagem e usa-la do que instalar fontes.