2010-12-10 48 views
10

Encore une fois, j'ai besoin de votre aide.C# - Comment utiliser une police personnalisée sans l'installer dans le système

Je développe une petite application sur C# qui utilise une police personnalisée. Le problème est que la police doit être préalablement installée sur le système. Si la police n'est pas présente dans le système, elle utilise simplement Times New Roman. Est-il possible d'intégrer le fichier de police dans l'application afin qu'il n'ait pas besoin d'être installé dans chaque système?

Merci.

+0

doublons possibles: http://stackoverflow.com/questions/2288246, http://stackoverflow.com/questions/3007805/embedding-deploying-custom-font-in-net-app, http : //stackoverflow.com/questions/556147/how-to-quickly-and-easily-embed-fonts-in-winforms-app-in-c –

Répondre

9

Si vous êtes encore en train de lire ceci, je vous ferai remarquer que vous n'avez pas besoin d'utiliser du code non sécurisé pour charger la police à partir d'une ressource. Voici un exemple en utilisant Marshal.

PrivateFontCollection _fonts = new PrivateFontCollection(); 

byte[] fontData = Resources.CustomFontResourceName; 

IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length); 

Marshal.Copy(fontData, 0, fontPtr, fontData.Length); 

_fonts.AddMemoryFont(fontPtr, fontData.Length); 

Marshal.FreeCoTaskMem(fontPtr); 

Font customFont = new Font(_fonts.Families[0], 6.0F); 
+0

L'article auquel la réponse acceptée est liée explique qu'il s'agit d'une option, à la fois pour les programmeurs VB.NET et pour ceux qui ne veulent pas utiliser 'unsafe' en C#. –

+0

@Cody Ensuite, je suppose, voici un exemple :). – Shibumi

+0

lorsque j'utilise cette approche pour charger des polices sur mon ordinateur de développement, cela fonctionne uniquement avec les polices .ttf et non avec les polices .otf. Lorsque je déploie mon site Web sur le cloud (windows azure), il ne fonctionne qu'avec les polices .otf et non avec les polices .ttf. Comment se peut-il? – fireydude