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


Сложная обработка скриптов

Ниже приведены варианты отображения и связанной обработки текста для поддержки эффектов тонкой оформления или сложных скриптов.

  • Текстовые функции
  • Изменение элементов управления
  • Полнофункционированные элементы управления редактированием
  • Одноимесяца

Выбор параметров зависит от следующих факторов:

  • Тип текста или скриптов.
  • Модель реализации, например разметка текста и обработка разрывов строк приложением.
  • Обновление существующего приложения и создание нового приложения.

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

Сложная обработка скриптов с помощью текстовых функций

Приложения, использующие в основном обычный текст, то есть текст, использующий один и тот же шрифт, вес, цвет и т. д., традиционно пишут текст и измеряют длину строк с помощью стандартных текстовых функций, таких как TextOut, ExtTextOut, TabbedTextOut, DrawText и GetTextExtentExtPoint. Эти функции поддерживают обработку сложных скриптов и эффектов оформления. Дополнительные сведения см. в разделе Шрифты и текст.

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

  • Приложение должно сохранять символы в буфере и одновременно отображать целую строку текста, а не вызывать, например, Метод ExtTextOut для каждого символа по мере ввода пользователем. Этот механизм позволяет расширенным модулям формирования текста использовать контекст для правильного упорядочения и создания глифов .
  • Приложение должно использовать GetTextExtentExtentExPoint для определения длины строки, а не вычислять длину строк из кэшированных символов, так как ширина глифа может варьироваться в зависимости от контекста.
  • При необходимости в приложении должна быть добавлена поддержка порядка чтения справа налево и выравнивания по правому краю.
  • Изменение порядка и контекстная обработка, необходимая для сложных скриптов или тонкой типографии, требует значительного увеличения обработки по сравнению с базовым отображением текста для простых скриптов. Поэтому, чтобы избежать проблем с производительностью, приложение не должно обрабатывать большие объемы текста перед отображением результатов и возвратом управления пользователю.

Сложная обработка скриптов с помощью элементов управления "Изменить"

Стандартные элементы управления редактированием Windows были расширены для поддержки многоязычного текста и сложных скриптов. Расширенная поддержка включает ввод и отображение, а также правильное перемещение курсора над символьными кластерами, например в тайских сценариях и сценариях Devanagari. Дополнительные сведения см. в разделе Изменение элементов управления.

Сложная обработка скриптов с помощью элементов управления "Многофункциональное редактирование"

Rich Edit 3.0 — это коллекция интерфейсов более высокого уровня, которая использует преимущества Uniscribe для изоляции приложений макетов текста от сложностей определенных скриптов. Расширенное редактирование — это самый простой способ отображения в приложениях сложных скриптов, даже если их основное назначение не обязательно заключается в разметке текста. Rich Edit обеспечивает быстрое и универсальное редактирование многоязыкового текста в Юникоде и простого обычного текста. Он включает в себя широкие возможности создания сообщений и COM-интерфейсов, редактирование текста, форматирование, разрыв строк, простой макет таблицы, вертикальный макет текста, двунаправленный текстовый макет, поддержку indic and thai, интерфейс редактирования, подобный microsoft Word, и интерфейсы текстовой объектной модели.

Наряду с интерфейсами Rich Edit приложения могут использовать функцию Rich Edit TextOut для автоматического анализа, формирования, положения и разрыва линий. Дополнительные сведения см. в разделе Rich Edit Controls.

Сложная обработка скриптов с помощью Uniscribe

Uniscribe обеспечивает самую широкую поддержку обработки текста, включающую эффекты тонкой оформления и сложные скрипты. Он поддерживает сложные правила, найденные в таких сценариях, как арабский, деванагари и тайский. Он обрабатывает скрипты, написанные справа налево, такие как арабский и иврит, и поддерживает смешивание скриптов. Uniscribe также предоставляет функции шрифта OpenType , которые могут использоваться приложениями для управления эффектами оформления. Дополнительные сведения см. в разделе Обработка сложных скриптов.

Сведения об Uniscribe

Обработка сложных скриптов