2

I want to use a specific font in my winform app. This font will be auto installed in user personal computer from my application resource.

How can I do that?

I used some code which is from user personal computer. If I use this the font must be remain previously in user personal computer but I don't want that.

         System.Drawing.Text.PrivateFontCollection fontCollection = new     System.Drawing.Text.PrivateFontCollection();
         fontCollection.AddFontFile(@"C:\Windows\Fonts\SUTOM__.TTF");
         FontFamily family = new FontFamily("SutonnyMJ", fontCollection);
         Font font3of9 = new Font(family, 15);
         label1.Font = font3of9;
brian d foy
  • 129,424
  • 31
  • 207
  • 592

1 Answers1

8

1. Install Using Setup Project

You can install font from your setup project to do this you have to

File System > Right Click under the File System on Target Machine > Add Special Folder Fonts Folder

Then Select Fonts Folder and Add > File... Add Font Folder SS

2. Install Font Programmatically
To achive this you have to do some external calls unfortunately.

[DllImport("gdi32.dll", EntryPoint="AddFontResourceW", SetLastError=true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
                                         string lpFileName);

Then call it from anywhere you want

AddFontResource(@"C:\FontLocation\MyFont.TTF");
Yakup Ünyılmaz
  • 404
  • 3
  • 11
  • +1 for the first part. About the second part, AddFontResource adds the font only temporarily, until reboot. (See Remarks [here](https://msdn.microsoft.com/en-us/library/dd183326(v=vs.85).aspx)). – Vlad Mar 25 '18 at 11:36