Шрифты OpenType в реестре Windows - PullRequest
0 голосов
/ 16 апреля 2020

Я пишу сценарий PowerShell для установки шрифтов TrueType и OpenType в Windows. Сценарий добавляет запись реестра в компьютер \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Fonts и копирует файл шрифта в C: \ Windows \ Fonts. Если я делаю это не так, а только копирую файл в каталог шрифтов, Windows автоматически устанавливает шрифт в пространство пользователя (C: \ Users \ Имя пользователя \ AppData \ Local \ Microsoft \ Windows \ Fonts).

Я вижу, что те несколько шрифтов OpenType, которые установлены на моем компьютере и установлены Windows, имеют строковое имя, например " FontName ( TrueType) "в реестре, хотя они являются шрифтами OpenType ?? Разве не было бы больше смысла, если бы имя было " FontName (OpenType)"?

Есть ли какой-то стандарт вокруг этого?

1 Ответ

1 голос
/ 04 мая 2020

В целях регистрации и перечисления шрифта в системе строки, используемые для имен записей, не имеют значения. Запись с именем «спам» будет работать так же хорошо, как «Arial Regular (TrueType)» или «Arial Regular (OpenType)». Все, что имеет значение, - это уникальность в этом ключе.

Однако для обслуживания реестра - установки или удаления шрифтов и миграции во время обновления или до новой системы - есть части ОС, которые ожидают ввода. имена должны быть определенного формата. Таким образом, даже если шрифт можно считать шрифтом OpenType, вы должны использовать шаблон «(TrueType)» для имен записей.

Как отмечалось другими в комментариях, TrueType против . OpenType различия нечеткие. Большинство шрифтов, которые могут рассматриваться как шрифты TrueType, будут квалифицироваться как шрифты OpenType, но не все; в частности, некоторые шрифты для MacOS используют расширения, определенные в Справочном руководстве Apple по TrueType, но не в OpenType spe c. А в OpenType spe c есть несколько расширений, не включенных в справочное руководство Apple по TrueType.

Но для ваших целей различие между ТТ и ОТ не имеет значения. Всегда используйте «(TrueType)» в реестре.

...