Новые возможности DirectWrite

В этом разделе описаны новые возможности DirectWrite для различных выпусков Windows 10.

Пакет SDK для приложений Windows

Пакет SDK для приложений Windows представляет новую версию DirectWrite с именем DWriteCore. Дополнительные сведения см. в обзоре DWriteCore.

обновления Windows 10 за май 2019 г.

Функции или API-интерфейсы не были добавлены и не обновлены для Windows 10 версии 1903 (10.0; Сборка 18362)— также известная как обновление Windows 10 за май 2019 г..

Обновление Windows 10 за октябрь 2018 г.

Добавлены или обновлены следующие функции и API для Windows 10 версии 1809 (10.0; Сборка 17763)- также известная как обновление Windows 10 за октябрь 2018 г..

Новый

Обновления Windows 10 за апрель 2018 г.

Добавлены или обновлены следующие функции и API для Windows 10 версии 1803 (10.0; Сборка 17134)— также известная как Обновление Windows 10 апреля 2018 г.

Новый

Windows 10 Fall Creators Update;

Добавлены или обновлены следующие функции и API для Windows 10 версии 1709 (10.0; Сборка 16299)— также известная как Windows 10 Fall Creators Update.

Новый

Переехал

Перечисление DWRITE_GLYPH_IMAGE_FORMATS перемещено из dwrite_3.hdcommon.h.

Windows 10 Creators Update

Добавлены или обновлены следующие функции и API для Windows 10 версии 1703 (10.0; Сборка 15063)- также известная как Windows 10 Creators Update.

Расширенная поддержка API для облачных шрифтов и пользовательских наборов шрифтов

В Windows 10 включены API, которые позволяют приложениям легко получать доступ к шрифтам из службы шрифтов Windows. В Windows 10 Creators Update API для удаленных шрифтов расширены, чтобы обеспечить простой доступ к шрифтам из других источников в Интернете, к которым можно получить доступ с помощью HTTP или HTTPS. 

Новые API удаленного шрифта можно использовать с общедоступными или частными веб-службами. Кроме того, их можно использовать для доступа к необработанным файлам шрифтов OpenType (TTF, OTF., TTC, OTC) или шрифтам, упакованным в форматах контейнеров WOFF или WOFF2 . Новые API используются в сочетании с существующими API для очередей запросов на скачивание данных удаленного шрифта и обработки фактического процесса загрузки.

Другие новые API упрощают работу приложений с пользовательскими шрифтами, хранящимися в локальной файловой системе или загруженными в буфер памяти.

Дополнительные сведения о новых API для работы с удаленными шрифтами, пользовательскими наборами шрифтов или форматами контейнеров WOFF/WOFF2 см. в следующем разделе:

Пользовательские наборы шрифтов

См. также ссылки на справочные разделы API, указанные в этом разделе.  Использование новых и существующих API для работы с пользовательскими шрифтами также показано в примере настраиваемых наборов шрифтов DirectWrite. В этом примере показана реализация кода для нескольких различных сценариев, включая локальные шрифты на диске, удаленные шрифты в Интернете, данные шрифтов в памяти и шрифты в упакованных форматах WOFF или WOFF2.

Начальная поддержка вариантов шрифта OpenType

Версия 1.8 спецификации формата шрифта OpenType представила интересное новое расширение для формата, известного как Варианты шрифта OpenType. DirectWrite обновлен в Windows 10 Creators Update для поддержки именованных экземпляров шрифтов переменных. Дополнительные сведения см. в следующей статье:

Шрифты переменных OpenType

Юбилейное обновление Windows 10 Anniversary Update

Добавлены или обновлены следующие функции и API для Windows 10 версии 1607 (10.0; Сборка 14393)— также известная как юбилейное обновление Windows 10.

Улучшенная поддержка цветовых шрифтов

Начиная с Юбилейного обновления Windows 10 DirectWrite обеспечивает встроенную поддержку более широкого спектра цветовых форматов, что позволяет разработчикам использовать больше типов шрифтов в приложениях с поддержкой DirectWrite, чем когда-либо раньше. Добавлена поддержка:

  • Таблица OpenType "COLR", которая обеспечивает компактный векторный контент в шрифтах. (Поддерживается с Windows 8.1.)
  • Таблица OpenType svG, которая включает содержимое SVG в шрифтах.
  • Таблица OpenType "CBDT", которая включает содержимое растрового рисунка цвета в шрифтах.
  • Таблица OpenType "sbix", которая включает содержимое растрового изображения цвета в шрифтах.

Direct2D, использующий DirectWrite для отрисовки текста, поддерживает эти форматы цветов автоматически при включении флага D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT . Дополнительные сведения см. в следующих разделах:

Поддержка Adobe Typekit и других клиентов службы шрифтов

Некоторые службы шрифтов, такие как Adobe Typekit, имеют клиентские служебные программы, позволяющие пользователю загружать шрифты из службы и использовать их в разных приложениях на компьютере Windows. Эти служебные программы обычно работают, выполняя вызовы времени выполнения к GDI для загрузки дополнительных шрифтов, а не постоянной установки шрифтов в системе. Из-за этого в более ранних версиях Windows шрифты будут использоваться в приложениях на основе GDI, но не в приложениях DirectWrite. Начиная с юбилейного обновления Windows 10, шрифты, загруженные такими служебными программами, также будут доступны в DirectWrite, а также в GDI.

Шрифты, загруженные служебной программой службы шрифтов, отображаются в системной коллекции шрифтов, полученной путем вызова метода IDWriteFactory::GetSystemFontCollection. Поскольку службы шрифтов обычно следуют модели лицензирования на пользователя, шрифты, загруженные этими служебными программами, управляются на основе каждого пользователя. В результате существующие приложения DirectWrite могут использовать шрифты, полученные пользователями с помощью таких служб, без каких-либо изменений кода, необходимых в приложении, что обеспечивает более простой интерфейс для пользователей.

Поддержка коллекций OpenType с помощью структур CFF

Форматы шрифтов OpenType и TrueType уже давно поддерживают возможность упаковки нескольких шрифтов в один файл шрифта, известный как "коллекция шрифтов". Спецификация OpenType всегда позволяет шрифтам использовать форматы TrueType или CFF для данных структуры глифа. Однако до недавнего времени спецификация разрешена только для коллекций, в которых контуры глифов используют формат TrueType. OpenType версии 1.7 теперь позволяет коллекциям использовать форматы TrueType или CFF для данных структуры глифа. Начиная с юбилейного обновления Windows 10 DirectWrite поддерживает коллекции OpenType с помощью данных структуры CFF.

Windows 10

Интеграция службы шрифтов Windows

Начиная с Windows 10, шрифты, включенные в Windows, доступны в веб-службе и доступны через DirectWrite на любом устройстве с Windows 10. Это относится ко всем выпускам Windows 10. Это позволяет приложениям отображать содержимое с помощью любого шрифта Windows, даже если шрифт в данный момент не установлен на устройстве.

Поддержка механизмов службы шрифтов DirectWrite реализована в платформе XAML, что означает, что любые приложения, использующие XAML, не требуют изменений кода для использования службы шрифтов. Пример кода с загружаемыми шрифтами (XAML) демонстрирует это. Приложениям, которые вызывают API DirectWrite, напрямую потребуется использовать новые API для использования механизмов службы шрифтов. Дополнительные сведения см. в следующих разделах:

Пример кода с загружаемыми шрифтами (DirectWrite) иллюстрирует использование нескольких новых API.

API набора шрифтов

Интерфейсы коллекции шрифтов DirectWrite предоставляют представление коллекции шрифтов, упорядоченных по семействам шрифтов, используя вес, растяжение и стиль в качестве атрибутов подсемейства. Во внутреннем режиме DirectWrite реализует интерфейс коллекции шрифтов с помощью неструктурированного списка шрифтов с различными атрибутами. Этот подход является более гибким в том, что в поддержке перечисления семейств весовых и растянутых и стилей, но также может поддерживать запросы и фильтрацию с помощью других атрибутов шрифтов.

В Windows 10 этот более гибкий механизм обработки шрифтов становится доступным для приложений с помощью IDWriteFontSet и связанных API. API набора шрифтов можно использовать, например, для создания настраиваемого пользовательского интерфейса выбора шрифтов, использующего настраиваемые приложениями свойства шрифта в пользовательском наборе шрифтов.

Дополнительные сведения см. в следующих разделах:

Новые режимы интервала между строками в текстовом макете

Текстовые форматы DirectWrite и интерфейсы текстового макета поддерживают новые режимы интервала между строками. В более ранних версиях реализация текстового макета DirectWrite позволяет выполнять интервалы между строками, в которых высота каждой строки была задана автоматически на основе самого высокого элемента в строке (режим по умолчанию) или междустрочного интервала со всеми строками, установленными на единую высоту, определяемую приложением (универсальный режим). В Windows 10 поддерживается дополнительный режим интервала между строками, который предоставляет приложениям дополнительные возможности для поведения междустрочного интервала. Дополнительные сведения см. в следующих разделах:

Пример кода междустрочного интервала (DirectWrite) иллюстрирует использование нескольких новых API, а также предоставляет визуализацию всех различных режимов интервалов между строками, что упрощает понимание различных доступных параметров междустрочного интервала.

Взаимодействие GDI

С момента внедрения в Windows 7 DirectWrite предоставил путь миграции для приложений, которые изначально были реализованы с помощью модели шрифтов GDI, макета текста и отрисовки. Это было предоставлено через интерфейс [[IDWriteGdiInterop]. В Windows 10 дополнительные API предоставляют дополнительные возможности взаимодействия GDI. Дополнительные сведения см. в следующем разделе:

Windows 8.1

Цветовые шрифты отрисовки

Начиная с Windows 8.1, DirectWrite поддерживает цветовые шрифты. Direct2D, использующий DirectWrite для отрисовки текста, добавил значение перечисления D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT, чтобы включить эту функцию при рисовании текста. Дополнительные сведения см. в следующих разделах:

Windows 8

Новый интерфейс фабрики IDWriteFactory1 для создания дополнительных интерфейсов, доступных.

Дополнительные свойства шрифта, такие как супер/подстрочный, наклон курсора, PANOSE и диапазоны Юникода.

Улучшения интервалов, такие как управление интервалами символов, устаревшие пары кернинга и обоснование. Дополнительные сведения см. в разделе "Обоснование", "Кернинг" и "Интервал ".

Улучшены целевые объекты и параметры отрисовки.

Улучшения анализа сложности текста.

Новые свойства скрипта, поддержка новых сценариев (Юникод 6), резервные дополнения шрифта, парные скобки и расширение bidi.

Улучшения производительности кэша шрифтов. Начиная с Windows 8 кэш шрифтов является глобальным и запускается при загрузке компьютера.

Новые режимы отрисовки.

Начиная с Windows 8 , DirectWrite поддерживает ряд функций, которые помогают создавать приложения для мирового рынка.

Ниже приведено несколько областей, которые помогают реализовать приложения с форматированным текстом, которые можно адаптировать для клиентов по всему миру.

Китайские, японские и корейские расширения C и D

Каждые несколько лет консорциум Юникод выпускает стандартный список дополнений к китайскому, японскому и корейскому блоку Унифицированного Идеографа. С редакцией Юникода 6.0 они выпустили блоки расширения C и D. Эти блоки иеографов можно найти на веб-сайте Юникода Extension C и Extension D.

Начиная с Windows 8 DirectWrite поддерживает кодовые точки Юникода для этих новых блоков стандартизованных Идеографов CJK, поэтому их можно использовать в приложениях DirectWrite .

Индийский символ рупии

В марте 2005 года индийское правительство объявило о конкурсе на выбор символа для индийской рупийной валюты. После многого конкурса, 15 июля 2010 года, индийское правительство выбрало дизайн, созданный D. Udaya Kumar, и DirectWrite включает поддержку кодовой точки Юникода, связанной с символом. Таким образом, приложения DirectWrite теперь поддерживают этот символ валюты.

Эмодзи

DirectWrite теперь поддерживает использование эмодзи в приложениях. Предыдущие версии DirectWrite, представленные с отсутствующим полем глифа, если вы попытались отобразить эмодзи ideograph. Начиная с Windows 8 DirectWrite поддерживает блок кода Юникода, связанный с эмодзи, поэтому если приложение использует стандартные кодовые точки Юникода для эмодзи, он отображает соответствующие глифы.

Мьянма, Тиффинаг и Старый Хангул языки

Начиная с Windows 8 , DirectWrite поддерживает блок кодовых точек Юникода, соответствующих глифам в Мьянме, Тиффинаге и старых языках Hangul, поэтому вы можете создавать приложения, содержащие текст на этих трех языках. Помимо поддержки этих символов, DirectWrite поддерживает уникальный способ, которым Старый Хангул обрабатывает разрыв строки.

Новые скрипты

Начиная с Windows 8 метод GetScriptProperties возвращает сведения для ряда новых скриптов. Ниже приведен список сценариев, поддерживаемых DirectWrite в Windows 8 и после этого.

  • Авестан
  • Бамум
  • Батак
  • Брахми
  • Египетские иероглифы
  • Имперский арамейский
  • Надпись Пехлави
  • Надпись Парчян
  • Яванский
  • Кайти
  • Lisu (Fraser)
  • Мандаик
  • Meetei Mayek
  • Старый южный Аравийский
  • Старый турецкий (Орхон)
  • Самаритянин
  • Тай Тэм (Ланна)
  • Тай Вьет