Как определить имя файла O / S установленного шрифта? - PullRequest
2 голосов
/ 12 марта 2009

Мы используем стороннюю библиотеку PDF Generator, для которой необходимо указать имя файла TrueType или Type1 при использовании шрифта, отличного от 14 или около того, который является частью стандарта PDF по умолчанию.

Так что, если я хочу использовать Bitstream Arrus Bold, я должен знать, что ссылка arrusb.ttf.

Если не перечислить все файлы в папке шрифтов и создать одноразовую коллекцию PrivateFontCollection для извлечения связей, есть ли способ получить имя основного шрифта из информации о шрифте, т. Е. С учетом производного Courier New, Bold, Italic * *

Я уже посмотрел на InstalledFontCollection, и там ничего нет.

1 Ответ

5 голосов
/ 12 марта 2009

Если вы не возражаете возиться в реестре, взгляните на

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts

У него есть такие пары, как

Name = "Arial (TrueType)"
Data = "arial.ttf"

Вы можете сделать это необходимые запросы, как это:

static RegistryKey fontsKey =
    Registry.LocalMachine.OpenSubKey(
        @"Software\Microsoft\Windows NT\CurrentVersion\Fonts");

static public string GetFontFile(string fontName)
{
    return fontsKey.GetValue(fontName, string.Empty) as string;
}

Вызов GetFontFile("Arial (TrueType)") возвращает "arial.ttf"

Конечно, вы можете изменить код, добавив часть (TrueType) к fontName, или просмотреть все, возвращенное fontsKey.GetValueNames(), чтобы найти лучшее совпадение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...