Как проверить, установлен ли шрифт? - PullRequest
0 голосов
/ 26 октября 2018

У меня проблемы с определением, установлен ли на коллекции компьютеров собственный шрифт (Euclid Triangle).

Я использовал код, указанный здесь « Проверьте, установлен ли шрифт », и он работает на моем компьютере с Windows 10. Но он не работает на машине с Windows 7 и кучей машин у моего клиента.

Все машины имеют .Net 4.5 и выше.

Шрифт не указан, если я попытаюсь перечислить все шрифты на компьютере:

    static void ListFonts()
    {
        try
        {
            using (InstalledFontCollection fontsCollection = new InstalledFontCollection())
            {
                FontFamily[] fontFamilies = fontsCollection.Families;
                var fonts = new List<string>();
                foreach (FontFamily font in fontFamilies)
                    fonts.Add(font.Name);
                var file = new FileInfo(Assembly.GetExecutingAssembly().Path() + "\\fonts.txt");
                Serializer.SerializeToFile(fonts, file.FullName);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Printer Configuration", MessageBoxButtons.OK, MessageBoxIcon.Error);
            var file = new FileInfo(Assembly.GetExecutingAssembly().Path() + "\\log.txt");
            File.WriteAllText(file.FullName, ex.ToString());
            Console.WriteLine(ex.ToString());
        }
    }

РЕДАКТИРОВАТЬ: я запустил мой код от имени администратора, чтобы подтвердить, что проблема не связана с разрешениями.

1 Ответ

0 голосов
/ 26 октября 2018

Используя LINQ, итерируя список установленных шрифтов и проверяя, содержит ли он определенный, он должен быть по существу однострочным (плюс неизбежный шаблон):

static bool IsFontInstalled(string fontname)
{
    using (var ifc = new InstalledFontCollection())
    {
        return ifc.Families.Any(f => f.Name == fontname);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...