Поделиться через


Типография в Windows Presentation Foundation

Обновлен: Ноябрь 2007

В этом разделе содержится введение в основные типографические возможности WPF. Эти возможности включают повышение качества и производительности оторисовки текста, типографическую поддержку OpenType, расширенный международный текст, улучшенную поддержку шрифтов и новые текстовые API.

В этом разделе содержатся следующие подразделы.

  • Улучшенное качество и производительность работы с текстом
  • Типография с широкими возможностями
  • Расширенная многоязыковая поддержка текста
  • Расширенная поддержка шрифтов
  • Новые API
  • Ресурсы
  • Связанные разделы

Улучшенное качество и производительность работы с текстом

Текст в приложении WPF подготавливается к просмотру с использованием технологии Технология Microsoft ClearType, которая повышает ясность и удобочитаемость текста. Технология ClearType — это программная технология, разработанная корпорацией Microsoft, которая повышает удобочитаемость текста на существующих жидкокристаллических экранах, таких как экраны переносных компьютеров, карманных ПК и плоских дисплеев. Технология Технология ClearType использует рендеринг на подпиксельном уровне, позволяющий отображать текст с большей точностью его истинной формы, выравнивая знаки на дробной части пикселя. Дополнительное разрешение повышает четкость мелких деталей отображаемого текста, значительно облегчая его длительное чтение. Другим улучшением Технология ClearType в приложении WPF является применение устранение контурных неровностей по направлению оси y, которое сглаживает неровные края на верхних и нижних частях в текстовых знаках. Дополнительные сведения о возможностях Технология ClearType см. в разделе Общие сведения о технологии ClearType.

Текст со сглаживанием ClearType по оси y
Текст со сглаживанием ClearType по оси Y

Весь конвейер отрисовки текста может поддерживать аппаратное ускорение в приложении WPF, позволяя применять компьютер с минимальными требованиями к оборудованию. Отрисовка, которая не может быть выполнено на аппаратном уровне, использует программный рендеринг. Аппаратное ускорение влияет на все этапы конвейерной подготовки текста — от сохранения отдельных глифов, их компоновки в глифы для выполнения, применения эффектов и до применения алгоритма смешивания Технология ClearType для окончательной отрисовки. Дополнительные сведения об аппаратном ускорении содержатся в разделе Уровни графической отрисовки.

Диаграмма конвейера отрисовки текста
Диаграмма конвейера отрисовки текста

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

Типография с широкими возможностями

Формат шрифта OpenType является расширением формата TrueType®. Формат шрифта OpenType был разработан совместно корпорацией Microsoft и Adobe и предоставляет широкий набор дополнительных типографических возможностей. Объект Typography поддерживает множество дополнительных возможностей шрифтов OpenType, таких как изменение стилей и swash. Пакет средств разработки программного обеспечения предоставляет набор образцов шрифтов OpenType, которые разработаны с широкими возможности, например, шрифты Pericles и Pescadero. Дополнительные сведения см. в разделе Образец пакета шрифтов OpenType.

Шрифт OpenType Pericles содержит дополнительные глифы, поддерживающие изменение стилей для стандартных наборов глифов. Следующий текст отображает глифы с изменением стиля.

Текст, использующий глифы с изменением стилей OpenType
Текст, использующий глифы с изменением стилей OpenType

Swash глифы являются декоративными глифами, которые используют сложную орнаментацию, часто связанную с каллиграфией. Следующий текст отображает стандартные и swash глифы для шрифта Pescadero.

Текст, использующий стандартные и swash глифы OpenType
Текст, использующий стандартные и swash глифы OpenType

Дополнительные сведения о возможностях OpenType см. в разделе Возможности шрифта OpenType.

Расширенная многоязыковая поддержка текста

WPF поддерживает расширение международного текста, предоставляя следующие возможности:

  • Автоматическая расстановка пробелов во всех системах письма с использованием адаптивного измерения.

  • Широкая поддержка международного текста. Дополнительные сведения см. в разделе Глобализация и Windows Presentation Foundation.

  • Управляемый языком разрыв строки, расстановка переносов и выравнивание.

Расширенная поддержка шрифтов

WPF предоставляет расширенную поддержку шрифта с помощью следующих возможностей:

  • Юникод для всех текстов. Поведение шрифта и выбор, больше не требующий набора символов или кодовой страницы.

  • Поведение шрифта зависит от глобальных настроек, таких как язык системы.

  • Разделение типов FontWeight, FontStretch и FontStyle для определения FontFamily. Это обеспечивает большую гибкость, чем в программировании Win32, в котором логические сочетания курсивного и полужирного шрифта используются для определения семейства шрифтов.

  • Направление письма (горизонтальное или вертикальное) обрабатывается в зависимости от имени шрифта.

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

  • Международные шрифты, созданные из составных шрифтов с использованием группы одноязыковых шрифтов. Это позволяет избежать затрат ресурсов при разработке шрифтов для нескольких языков.

  • Составные шрифты внедряются в документ, тем самым обеспечивая его совместимость. Дополнительные сведения см. в примечаниях в классе FontFamily.

Новые API

WPF предоставляет для разработчиков несколько текстовых API-интерфейсы, которые используются при включении текста в приложения. Эти API-интерфейсы сгруппированы в три категории:

  • Макет и пользовательский интерфейс. Общие элементы управления текстом для GUI (graphical user interface — графический интерфейс пользователя).

  • Облегченное рисование текста. Предоставляет возможность рисования текста непосредственно в объекты.

  • Дополнительное форматирование текста. Позволяет реализовать пользовательский обработчик текста.

Макет и пользовательский интерфейс

На высшем уровне функциональности текстовый API-интерфейсы предоставляет общие элементы управления пользовательский интерфейс, такие как Label, TextBlock и TextBox. Эти элементы управления обеспечивают основные элементы Пользовательский интерфейс в приложении и легкий способ представления текста и взаимодействия с ним. Элемент управления, такие как RichTextBox и PasswordBox, обеспечивают более расширенную или специальную обработку текста. И классы, такие как TextRange, TextSelection и TextPointer, предоставляют удобное управление текстом. Эти элементы управления Пользовательский интерфейс предоставляют свойства, такие как FontFamily, FontSize и FontStyle, позволяющие управлять шрифтами, которые используются для отображения текста.

Использование эффектов точечных рисунков и текстовых эффектов

WPF позволяет создавать визуально интересные применения текста, используя такие возможности, как эффекты точечных рисунков, преобразования и текстовые эффекты. Следующий пример показывает типичный эффект тени, примененный к тексту.

Текст с тенью
Тень текста с мягкостью = 0,25

Следующий пример показывает эффект тени и шума, примененный к тексту.

Текст с тенью и шумом
Тень текста с шумом

В следующем примере показан эффект внешнего свечения, примененный к тексту.

Текст с эффектом свечения
Тень текста с использованием OuterGlowBitmapEffect

В следующем примере показан эффект размытия, примененный к тексту.

Текст с эффектом размытия
Тень текста с использованием BlurBitmapEffect

Следующий пример показывает вторую строку текста, масштабированную на 150% вдоль оси x, и третью строку текста, масштабированную на 150% вдоль оси y.

Текст с использованием ScaleTransform
Текст, масштабируемый с использованием ScaleTransform

Следующий пример показывает текст, наклоненный вдоль оси x.

Текст с использованием SkewTransform
Текст, искаженный с использованием SkewTransform

Объект TextEffect является объектом модуля справки, который позволяет рассматривать текст, как одну или несколько групп символов в строке. В следующем примере, взятом из раздела Пример использования объекта TextEffect, показан поворот отдельных знаков. Каждый знак повернут, независимо друг от друга с интервалом 1 секунда.

Пример эффекта анимации поворота текста
Снимок экрана текстового эффекта: повернутый текст

Использование документов нефиксированного формата

Дополнительно к общим элементам управления Пользовательский интерфейсWPF предлагает элемент управления макетом для презентации текста — элемент FlowDocument. Элемент FlowDocument в сочетании с элементом DocumentViewer предоставляет элемент управления для больших объемов текста с различными требованиями к макету. Элементы управления макета обеспечивают доступ к дополнительной типографии через объект Typography и свойства, связанные со шрифтами других элементов управления Пользовательский интерфейс.

Следующий пример показывает текстовое содержимое, размещенное в объекте FlowDocumentReader, который обеспечивает поддержку поиска, переходов, разбиения на страницы и масштабирования содержимого.

Текст, размещенный в объекте FlowDocumentReader
Снимок экрана примера использования шрифтов OpenType

Дополнительные сведения см. в разделе Документы в Windows Presentation Foundation.

Облегченное рисование текста

Можно рисовать текст непосредственно в WPF объекты с помощью метода DrawText объекта DrawingContext. Чтобы использовать этот метод, создайте объект FormattedText. Этот объект позволяет рисовать многострочный текст, в котором каждый символ можно форматировать отдельно. Функциональные возможности объекта FormattedText содержат большую часть функциональных возможностей флагов DrawText в API Win32. Кроме того, объект FormattedText содержит функциональные возможности, такие как поддержку многоточия, при котором многоточие отображается, когда текст выходит за границы. В следующем примере показан текст, имеющий несколько примененных к нему форматов, в том числе — линейный градиент на втором и третьем слове.

Отображенный текст с использованием объекта FormattedText
Отображенный текст с использованием объекта FormattedText

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

Структура текста с использованием кисти линейного градиента
Оконтуривание текста с использованием кисти линейного градиента

Следующие примеры иллюстрируют несколько способов создания интересных эффектов посредством изменения штриха, заливки и выделения преобразованного текста.

Пример установки разного цвета для штриха и заливки
Текст с различными цветами для заполнения штрихаПример применения кисти к штриху
Текст с кистью изображения, примененной к штрихуПример применения кисти к штриху и выделению
Текст с кистью изображения, примененной к штриху

Дополнительные сведения об объекте FormattedText см. в разделе Рисование форматированного текста.

Дополнительное форматирование текста

На наиболее развитом уровне текстовых API-интерфейсы приложение WPF предоставляет возможность создания пользовательской разметки текста с помощью объекта TextFormatter и других типов в пространстве имен System.Windows.Media.TextFormatting. Объект TextFormatter и связанные классы позволяют реализовать макет настраиваемую разметку текста, которая поддерживает пользовательское определение формата символов, стили абзаца, правила разрыва строки и другие возможности разметки для международного текста. Имеется несколько случаев, когда нужно переопределить реализацию по умолчанию поддержки разметки текста WPF. Однако если был создан элемент управления или приложение редактирования текста, может потребоваться реализация, отличная от реализации WPF по умолчанию.

В отличие от традиционного текстового API-интерфейс, объект TextFormatter взаимодействует с клиентом разметки текста через набор методов обратного вызова. Для предоставления этих методов в реализации класса TextSource требуется клиент. Следующая диаграмма иллюстрирует взаимодействие разметки текста между клиентским приложением и объектом TextFormatter.

Взаимодействие между приложением и объектом TextFormatter
Схема клиента структуры текста и TextFormatter

Более подробные сведения о создании макета пользовательской разметки текста содержатся в разделе Дополнительное форматирование текста.

Ресурсы

Полезным способом изучения возможностей OpenType является применения XamlPad для создания разметки, которая поддерживает использование различных типографских свойств. Дополнительные сведения см. в разделе XAMLPad.

Тестирование шрифтов OpenType с помощью XamlPad
XamlPad отображающий характеристики OpenType

См. также

Основные понятия

Общие сведения о технологии ClearType

Возможности шрифта OpenType

Рисование форматированного текста

Дополнительное форматирование текста

Оптимизация производительности: отображение текста

XAMLPad

Ссылки

FormattedText

TextFormatter

Другие ресурсы

Типография Майкрософт