Użycie własnej czcionki w projekcie - CargoPrivateFontCollection() - błąd

0

Witam.

Chciałem w projekcie użyć własnych czcionek, aby to zrobić użyłem porad z :
http://hongouru.blogspot.com/2010/10/c-how-to-add-fonts-ttf-true-type-fonts.html

NA jednym komputerze wszystko działa ok, natomiast na drugim na linijce
pfc.AddMemoryFont(ptrData, dataLength);
zwracając błąd File not found.

Możecie mi powiedzieć jakiego pliku może mu brakować, bo nie mam nie mam pojęcia o jaki może mu chodzić...:/ ?

0

Nie ma takiego błędu w funkcji AddFontMemResourceEx https://msdn.microsoft.com/en-us/library/windows/desktop/dd183325(v=vs.85).aspx

0

W funkcji:

 private void CargoPrivateFontCollection()
        {       
           byte[] fontArray = Project1.Properties.Resources.N_SEMIBOLD;             
            int dataLength = Project1.Properties.Resources.N_SEMIBOLD.Length;
            IntPtr ptrData = Marshal.AllocCoTaskMem(dataLength);
            Marshal.Copy(fontArray, 0, ptrData, dataLength);
            uint cFonts = 0;
            AddFontMemResourceEx(ptrData, (uint)fontArray.Length, IntPtr.Zero, ref cFonts);
            PrivateFontCollection pfc = new PrivateFontCollection();
            pfc.AddMemoryFont(ptrData, dataLength);
            Marshal.FreeCoTaskMem(ptrData);
            NBoldFontFamily = pfc.Families[0];
            NBoldFont = new Font(NBoldFontFamily , 15f, FontStyle.Bold);
	}

program wykłada się na linijce pfc.AddMemoryFont(ptrData, dataLength); zwracając :

Szczegółowe informacje na temat wywoływania debugowania w trybie JIT (just in time)
zamiast tego okna dialogowego znajdują się na końcu tego komunikatu.

         * Tekst wyjątku **************

System.IO.FileNotFoundException: Nie odnaleziono pliku.
w System.Drawing.Text.PrivateFontCollection.AddMemoryFont(IntPtr memory, Int32 length)
w Project1.Form1.CargoPrivateFontCollection()
w Project1.Form1.Form1_Load(Object sender, EventArgs e)
w System.Windows.Forms.Form.OnLoad(EventArgs e)
w System.Windows.Forms.Form.OnCreateControl()
w System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
w System.Windows.Forms.Control.CreateControl()
w System.Windows.Forms.Control.WmShowWindow(Message& m)
w System.Windows.Forms.Control.WndProc(Message& m)
w System.Windows.Forms.ScrollableControl.WndProc(Message& m)
w System.Windows.Forms.ContainerControl.WndProc(Message& m)
w System.Windows.Forms.Form.WmShowWindow(Message& m)
w System.Windows.Forms.Form.WndProc(Message& m)
w System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
w System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
w System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

         * Zestawy załadowane **************

mscorlib
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

mscorlib.resources
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

SpizNET
Wersja zestawu: 1.0.0.15
Wersja Win32: 1.0.0.15
CodeBase: file:///C:/Users/dominic/Desktop/Release/SpizNET.exe

System.Windows.Forms
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5491 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll

System.Drawing
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5491 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Data.SqlServerCe
Wersja zestawu: 3.5.1.0
Wersja Win32: 3.5.5692.0
CodeBase: file:///C:/Users/dominic/Desktop/Release/System.Data.SqlServerCe.DLL

MySql.Data
Wersja zestawu: 6.1.6.0
Wersja Win32: 6.1.6.0
CodeBase: file:///C:/Users/dominic/Desktop/Release/MySql.Data.DLL

System.Data
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll

System.Transactions
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll

System.Management
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Management/2.0.0.0__b03f5f7f11d50a3a/System.Management.dll

System.Windows.Forms.resources
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_pl_b77a5c561934e089/System.Windows.Forms.resources.dll

System.Core
Wersja zestawu: 3.5.0.0
Wersja Win32: 3.5.30729.5420 built by: Win7SP1
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll

System.Configuration
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Xml
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll

System.EnterpriseServices
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll

System.resources
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.resources/2.0.0.0_pl_b77a5c561934e089/System.resources.dll

System.Data.resources
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5459 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Data.resources/2.0.0.0_pl_b77a5c561934e089/System.Data.resources.dll

System.Drawing.resources
Wersja zestawu: 2.0.0.0
Wersja Win32: 2.0.50727.5420 (Win7SP1.050727-5400)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing.resources/2.0.0.0_pl_b03f5f7f11d50a3a/System.Drawing.resources.dll

         * Debugowanie w trybie JIT **************

Aby włączyć debugowanie w trybie JIT (just-in-time), plik .config tej
aplikacji lub komputera (machine.config) musi mieć
wartość jitDebugging ustawioną w sekcji system.windows.forms.
Aplikacja musi być również skompilowana z włączonym
debugowaniem.

Na przykład:

<configuration> <system.windows.forms jitdebugging="true" /> </configuration>

Gdy debugowanie JIT jest włączone, wszystkie nieobsługiwane wyjątki
są wysyłane do debugera JIT zarejestrowanego na komputerze
i nie są obsługiwane w tym oknie dialogowym.

0

Co to za czcionka? Jak wskażesz czcionkę na dysku zamiast pobierać ją z resources pfc.AddFontFile("C:\\Jakaś\\Czczionka\\XYZ.ttf"); to też leci wyjątek?

0

Przy użyciu wspomnianej przez Ciebie metody też leci wyjątek:

System.IO.FileNotFoundException: Nie odnaleziono pliku.
w System.Drawing.Text.PrivateFontCollection.AddFontFile(String filename)
w Project1.Form1.CargoPrivateFontCollection()

Wychodzi na to, że co innego zwraca ten błąd (plik na pewno jest w podanej lokalizacji).
Tylko co ?

A czcionka to Neris znaleziona w sieci.

1

To ta: http://www.fontsquirrel.com/fonts/neris ?
Windows Forms applications support TrueType fonts and have limited support for OpenType fonts.
Czcionka jest w złym formacie użyj jakiegoś konwertera i zamień ją na TrueType i problem powinien zniknąć.

0

Zaraz spróbuję zrobić tak jak piszesz ale nie rozumiem dlaczego na jedym komputerze działa a na drugim nie (wynika to z różnicy systemów ? Działa na 8.1, nie działa na 7)

UPDATE:
Konwersja na ttf pomogła :). (proszę o odhaczenie tematu, bo dodałem nie zalogowany :/)

1 użytkowników online, w tym zalogowanych: 0, gości: 1