Пользовательские коллекции шрифтов (Windows 7/8) — Win32 apps
- Статья
DirectWrite предоставляет доступ к системной коллекции шрифтов с помощью метода IDWriteFactory::GetSystemFontCollection. Это наиболее часто используемая коллекция шрифтов. Однако некоторые приложения должны использовать шрифты, которые не установлены в системе, например из включенных файлов шрифтов или файлов шрифтов, внедренных в приложение.
Если нужные шрифты отсутствуют в системной коллекции шрифтов, можно создать пользовательскую коллекцию шрифтов, полученную из IDWriteFontCollection.
Этот обзор состоит из следующих частей:
- Регистрация и отмена регистрации загрузчика коллекции шрифтов
- IDWriteFontCollectionLoader
- IDWriteFontFileEnumerator
- CreateCustomFontFileReference
- IDWriteFontFileLoader
- IDWriteFontFileStream
Регистрация и отмена регистрации загрузчика коллекции шрифтов
Вы регистрируете загрузчик коллекции шрифтов с помощью метода IDWriteFactory::RegisterFontCollectionLoader и передаете его интерфейс IDWriteFontCollectionLoader , реализованный приложением в виде одноэлементного объекта. Этот объект загружает шрифты при запросе пользовательской коллекции. Как системная коллекция шрифтов, так и пользовательские коллекции шрифтов кэшируются, поэтому шрифты загружаются только один раз.
Загрузчик коллекции шрифтов должен быть выгружен с помощью IDWriteFactory::UnregisterFontCollectionLoader.
Примечание
Регистрация загрузчика коллекции шрифтов добавляется в число ссылок; Не вызывайте UnregisterFontCollectionLoader из деструктора или объекта загрузчика коллекции никогда не отменяйте регистрацию.
IDWriteFontCollectionLoader
Вы создаете объект IDWriteFontFileEnumerator с помощью idWriteFactory::CreateCustomFontCollection и передаете ему ключ, определенный приложением. Ключ является указателем void и типом данных, форматом и значением, определенным приложением и непрозрачным для системы шрифтов.
В то время как ключ может быть любым, DirectWrite требует, чтобы каждый ключ был как:
- Уникальный для одной коллекции шрифтов в области загрузчика.
- Действителен до тех пор, пока загрузчик не будет зарегистрирован с помощью фабрики.
При вызове метода CreateCustomFontCollectionDirectWrite возвращается к интерфейсу IDWriteFontCollectionLoader, реализованного в виде одноэлементного объекта приложением. Метод обратного вызова IDWriteFontCollectionLoader::CreateEnumeratorFromKey используется DirectWrite для получения объекта IDWriteFontFileEnumerator, реализованного приложением. Объект IDWriteFactory , используемый для создания коллекции, передается в этот метод и должен использоваться перечислителем файла шрифта для создания объектов IDWriteFontFile , которые будут включены в коллекцию.
Ключ, переданный этому методу, идентифицирует коллекцию шрифтов и является тем же ключом, который передается в CreateCustomFontCollection.
IDWriteFontFileEnumerator
Определяемый приложением объект IDWriteFontFileEnumerator , созданный методом CreateEnumeratorFromKey , используется для перечисления файлов шрифтов в коллекции, создавая объект IDWriteFontFile для каждого файла. Метод IDWriteFontFileEnumerator::MoveNext изменяет положение на следующий файл шрифта. Если файл находится в позиции, он установит для hasCurrentFileзначение TRUE. В противном случае будет задано значение FALSE , а метод вернет S_OK.
Примечание
Перечислитель файлов шрифтов должен начинаться с позиции перед первым элементом и расширенным при первом вызове MoveNext.
Объект IDWriteFontFile выводится методом IDWriteFontFileEnumerator::GetCurrentFontFile . Если в текущей позиции нет файла шрифта, так как MoveNext еще не был вызван или hasCurrentFile имеет значение FALSE, getCurrentFontFile вернет E_FAIL.
CreateCustomFontFileReference
Выходные данные объекта IDWriteFontFilebyGetCurrentFontFile можно создать путем вызова IDWriteFactory::CreateCustomFontFileReference. Ключ ссылки на файл шрифта идентифицирует конкретную ссылку на файл шрифта и должен быть уникальным в загрузчике шрифтов, который загрузит файл.
IDWriteFontFileLoader
Метод CreateCustomFontFileReference принимает объект IDWriteFontFileLoader , реализованный приложением, которое используется для загрузки шрифта. Метод обратного вызова IDWriteFontFileLoader::CreateStreamFromKey передает ключ и выводит объект IDWriteFontFileStream .
IDWriteFontFileStream
Объект IDWriteFontFileStream , реализованный приложением, предоставляет данные файла шрифта для ссылки на файл шрифта из пользовательского загрузчика файлов шрифтов. Вместе с размером файла и временем последней записи он предоставляет метод (ReadFileFragment) для получения фрагментов файлов, которые необходимо скомпилировать в объект IDWriteFontFile .
Примечание
Реализации ReadFileFragment должны возвращать ошибку, если запрошенный фрагмент находится за пределами границ файла.
IDWriteFontFileStream может получать содержимое файла шрифта из любого места, например локального жесткого диска или внедренных ресурсов.
2.2. Добавление шрифтов
2.2. Добавление шрифтов
За самой современной информацией о шрифтах в GIMP обратитесь на сайт GIMP, страница «Шрифты GIMP 2.6» [GIMP-FONTS]. Этот раздел попытается дать полезный обзор.
GIMP использует движок шрифтов FreeType 2 и систему управлениями шрифтами Fontconfig. GIMP может использовать любые шрифтры на пути Fontconfig; он также может использовать шрифты на поисковом пути GIMP, который указывается на странице Папки шрифтов диалога настроек. По умолчанию, поисковый путь шрифтов включает системную папку шрифтов GIMP, которую лучше не менять, хотя она и пустая, и папку
в вышей личной папке GIMP. Для удобства можно добавить дополнительные папки шрифтов.
FreeType 2 — очень мощная и гибкая система. По умолчанию, она поддерживает следующие форматы файлов:
Шрифты TrueType и коллекции
Шрифты Type 1
Шрифтры Type 1 с ключом CID
Шрифты CFF
Шрифты OpenType (оба варианта, TrueType и CFF)
Растровые шрифты на основе SFNT
Шрифты X11 PCF
Шрифты Windows FNT
Шрифты BDF (включая сглаженные)
Шрифты PFR
Шрифты Type42 (ограниченная поддержка)
Также можно добавить модули поддержки других типов файлов шрифтов. За дополнительной информацией идите на сайт FREETYPE 2 [FREETYPE].
Linux. На системах Linux если Fontconfig установлена как обычно, всё, что нужно сделать, чтобы добавить новый шрифт, это положить его файл в папку ~/.fonts
fonts
вашей личной папки GIMP или в любую папку на поисковом пути шрифтов. В любом случае этот шрифт появится при загрузке GIMP. Если вы хотите использовать его в уже запущенном GIMP, нажмите кнопку Обновить в диалоге Шрифты.Windows. Самый лёгкий способ установить шрифт — поместить его в папку Шрифты и оставить операционной системе сделать остальное. Эта папка по умолчанию находится в C:\windows\fonts
или C:\winnt\fonts
. Иногда двойное нажатие на файл шрифта установит его, а не только покажет, иногда — только покажет. Этот метод сделает шрифт доступным всем приложениям Windows, а не тольео GIMP.
Mac OS X. Есть несколько способов установить шрифт в системе. Его можно поместить в папку «Библиотеки»/«Шрифты» в вашей «Домашней папке». Или дважды нажать на пиктограмму шрифта в Искателе, что вызовет Книгу шрифтов. Вы можете просмотреть, как выглядит шрифт и выбрать нужные шрифты, чтобы их файлы установились в системе. В любом случае шрифт будет доступен всем приложениям, не только GIMP. Чтобы все пользователи могли использовать шрифт, поместите его в папку «Библиотеки»/«Шрифты» диска Mac OS X™ или в папку «Компьютер» столбца Коллекция Книги шрифтов.
Чтобы установить шрифт Type 1, необходимы файлы .pfb
и .pfm
. Передвиньте тот, у которого есть пиктограмма, в папку шрифтов. Другому необязательно быть с той же папке при перемещении, поскольку он использует своего рода поиск для нахождения необходимых файлов. Но поместить его в ту же папку не повредит.
В принципе, GIMP может использовать на Windows любой шрифт, поддерживаемый FreeType. Обнако те шрифты, которые не поддерживаются Windows напрямую, должны быть помещены в папку
вашей личной папки GIMP или на пути поиска шрифтов. Поддержка со стороны Windows зависит от версии. На всех системах, где работает GIMP, поддерживаются по крайней мере TrueType, Windows FON и Windows FNT. Windows 2000 и позже поддерживают Type 1 и OpenType. Windows ME поддерживает OpenType и может быть Type 1, но наиболее распространённый установщик GIMP под Windows официально не поддерживает Windows ME, хотя может и работать.
Замечание | |
---|---|
GIMP использует Fontconfig для управления шрифтами на Windows и Linux. Инструкции выше работают потому, что Fontconfig по умолчанию использует папку шрифтов Windows, т. fonts вашей личной папки GIMP всегда работает. |
Создание коллекций и библиотек шрифтов в Font Book на Mac и управление ими
Вы можете использовать коллекции шрифтов и библиотеки в Font Book на Mac для организации шрифтов macOS в группы — например, шрифты, которые вы используете для определенного веб-сайта, или все шрифты, которые похоже на почерк. Шрифты организованы в коллекции по умолчанию, перечисленные на боковой панели.
Примечание. Создаваемые вами коллекции отображаются в окне «Шрифты», доступном при работе в некоторых приложениях, таких как TextEdit. Создаваемые вами библиотеки шрифтов не отображаются в окне «Шрифты».
Откройте для меня книгу шрифтов
Создайте коллекцию
В приложении «Шрифты» на Mac выполните одно из следующих действий:
Выберите «Файл» > «Новая коллекция», затем перетащите шрифты из других коллекций в новую коллекция.
Выберите один или несколько шрифтов, затем выберите «Файл» > «Новая коллекция из выбранного».
Примечание: Когда вы добавляете шрифт в коллекцию, он по-прежнему доступен в предыдущем местоположении.
Дважды щелкните новую коллекцию на боковой панели, затем введите для нее имя.
Нажмите «Ввод».
Добавление шрифта в коллекцию
В приложении «Шрифты» на Mac выберите шрифт, который хотите добавить, затем перетащите его в коллекцию.
Когда вы добавляете шрифт в коллекцию, он по-прежнему доступен в прежнем месте.
Примечание: Вы не можете добавлять шрифты в смарт-коллекции.
Удаление шрифта из коллекции
В приложении «Шрифты» на Mac выберите коллекцию на боковой панели.
Если боковая панель не отображается, выберите «Вид» > «Показать боковую панель».
Удерживая нажатой клавишу Control, нажмите шрифт, который хотите удалить, затем нажмите «Удалить».
Щелкните Удалить шрифты для подтверждения.
При удалении шрифта из коллекции он по-прежнему доступен в книге шрифтов и в окне «Шрифты».
Примечание: Вы не можете удалить шрифты из смарт-коллекций.
Создать смарт-коллекцию
Смарт-коллекция группирует шрифты на основе таких критериев, как стиль дизайна и семейство. Если шрифт соответствует критериям, он автоматически включается в смарт-коллекцию.
В приложении «Шрифты» на Mac выберите «Файл» > «Новая смарт-коллекция», затем введите название своей коллекции.
Щелкните всплывающее меню в разделе «Имя коллекции», затем выберите «Все», чтобы найти шрифты, соответствующие всем введенным вами критериям, или «Любой», чтобы соответствовать любому из критериев.
Используйте всплывающие меню и текстовые поля для определения критериев поиска коллекции.
Нажмите кнопку «Добавить», чтобы добавить дополнительные критерии поиска.
Например, можно установить такие критерии, как «Стиль дизайна — полужирный» или «Фамилия — Helvetica».
Нажмите OK. Новая смарт-коллекция появится на боковой панели со значком шестеренки рядом с ее названием.
Чтобы отредактировать смарт-коллекцию, щелкните ее, удерживая клавишу Control, затем выберите «Редактировать смарт-коллекцию». Чтобы удалить смарт-коллекцию, щелкните ее, удерживая нажатой клавишу Control, затем выберите «Удалить» [ Имя смарт-коллекции ].
Создание библиотеки шрифтов
Библиотеку можно использовать для организации шрифтов. Например, если вы используете группу шрифтов только с определенным документом, создайте библиотеку шрифтов для хранения шрифтов, связанных с документом.
В приложении «Шрифты» на Mac выберите «Файл» > «Новая библиотека».
Дважды щелкните новую библиотеку на боковой панели, введите для нее имя и нажмите клавишу «Return».