У меня есть коллекция файлов шрифтов OpenType, которые являются различными стилями одного и того же семейства:
- "FreigSanLFProBol.otf" (FreightSansLFPro Bold)
- "FreigSanLFProBoo.otf"(FreightSansLFPro Regular)
- "FreigSanLFProBooIta.otf" (FreightSansLFPro Italic)
Чтобы установить эти шрифты через PowerShell и правильно добавить их в реестр, мне нужно знать их дружественныеимя стиля.
Когда я устанавливаю «FreigSanLFProBol.otf» через проводник Windows, раздел реестра содержит следующие данные:
{
name: "FreightSansLFPro Bold (TrueType)",
type: REG_SZ,
data: "FreigSanLFProBol.otf"
}
Проблема в том, что я не знаю, как программно определить значениев ключе "name" из самого файла шрифта.
Используя информацию, доступную в Название шрифта от powershell , я смог получить большую часть пути:
$path = "C:\Windows\Fonts\FreigSanLFProBol.otf"
Add-Type -AssemblyName System.Drawing
$fontCollection = New-Object System.Drawing.Text.PrivateFontCollection
$fontCollection.AddFontFile($(Get-Item $path).fullname)
$fontCollection.Families[-1].Name
Это дает мне результат "FreightSansLFPro "- отличается от значения ключа reg, которое дает его как" FreightSansLFPro Bold ".(Не берите в голову тот факт, что ключ reg по-прежнему перечисляет тип как «TrueType Font», даже если это шрифт OpenType).
Откуда он получает «Bold» и как получить это конкретное значение /название из файла шрифта программно?