2010-12-10 17 views
10

Po raz kolejny potrzebuję twojej pomocy.C# - Jak używać niestandardowej czcionki bez instalowania jej w systemie

Pracuję nad małą aplikacją na C#, która używa niestandardowej czcionki. Problem polega na tym, że czcionka musi być wcześniej zainstalowana w systemie. Jeśli czcionka nie jest obecna w systemie, po prostu używa Times New Roman. Czy istnieje sposób na osadzenie pliku czcionki w aplikacji, aby nie był on instalowany w każdym systemie?

Dziękuję.

+0

Możliwe duplikaty: 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 –

Odpowiedz

9

Jeśli nadal to czytasz, mogę zauważyć, że nie musisz używać niebezpiecznego kodu do ładowania czcionki z zasobu. Oto przykład użycia Marszałka.

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

Artykuł, do którego akceptowana odpowiedź prowadzi, wyjaśnia, że ​​jest to opcja, zarówno dla programistów VB.NET, jak i dla tych, którzy nie chcą używać 'unsafe' w języku C#. –

+0

@Cody Wtedy, przypuszczam, tutaj jest przykład :). – Shibumi

+0

Kiedy używam tego podejścia do ładowania czcionek na mojej maszynie programistycznej, działa tylko z czcionkami .ttf, a nie z czcionkami .otf. Kiedy wdrażam moją witrynę do chmury (Windows Azure), działa tylko z czcionkami .otf, a nie z czcionkami .ttf. Jak to może być? – fireydude

Powiązane problemy