C# WinForms - Import czcionek z pliku do programu - nie działa pod win7

0

Hej,
już pół dnia nie mogę się uporać z czcionkami. Początkowo ładowałem je z "Resources", ale program się "wykrzaczał" na Win7, na Win10 problemu nie było. Spróbowałem zatem załadować czcionki z osobnych plików, które dołączam instalatorem. Standardowo - na Win10 śmiga, na Win7 nie - wyrzuca komunikaty z wyjątków, na Win10 pobiera już pierwszym sposobem, jeśli usunę pliki (przy kompilacji katalog jest inny) to działa drugi (z obecnie zainstalowanej wersji).

Co może być przyczyną? Z góry wielkie dzięki.

Kod wiem, że pomieszany. To tak roboczo :)

private static PrivateFontCollection myFonts = new PrivateFontCollection();
        private static PrivateFontCollection myRegular = new PrivateFontCollection();
            #region ŁADOWANIE CZCIONEK
            try
            {
                myFonts.AddFontFile(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\font.otf");
                MessageBox.Show("Poszło z system.io: " + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\font.otf");
            }
            catch {
                try
                {
                    myFonts.AddFontFile(ProgramFilesx86() + "\\CZS\\CZS Generator\\font.otf");
                    MessageBox.Show("Poszło z funkcji: " + ProgramFilesx86() + "\\CZS\\CZS Generator\\font.otf");
                }
                catch (Exception e)
                {
                    MessageBox.Show("Komunikat:\n"+e.Message);
                }
            }

            try
            {
                myRegular.AddFontFile(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\fontregular.otf");
                MessageBox.Show("Poszło z system.io: " + System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\fontregular.otf");
            }
            catch
            {
                try
                {
                    myRegular.AddFontFile(ProgramFilesx86() + "\\CZS\\CZS Generator\\fontregular.otf");
                    MessageBox.Show("Poszło z funkcji: " + ProgramFilesx86() + "\\CZS\\CZS Generator\\fontregular.otf");
                }
                catch (Exception e)
                {
                    MessageBox.Show(Komunikat:\n" + e.Message);
                }
            }
                #endregion
0

chyba pierwsze co powinieneś podać to te komunikaty...

0

@abrakadaber, "nie można odnaleźć pliku". Ścieżka jest dobra bo wyświetlałem ją razem z komunikatem i porównywałem z okienkiem exploratora - idento. Co więcej, pod Windows 10 wszystko działa i nie ma tego problemu. Próbowałem też po prostu podać nazwę pliku, skoro są w tej samej lokalizacji ale dało to ten sam efekt. Googlowałem też za innymi sposobami określającymi obecną ścieżkę ale też nic.

1

rozumiem, że te fonty wypakowuje tam instalator. Jeśli tak to je wypakuj tam, gdzie być powinny takie pliki czyli do %user%\appdata i stamtąd pobieraj. Może być problem z UAC na W7

0

Problem rozwiązany. Pliki otf nie są do końca wspierane przez Windows Forms. Konwersja na ttf rozwiązała sprawę. Dzięki za rady.

Zabawne, że to FileNotFoundException :D

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