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


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

Microsoft Rich Edit 3.0 назначает символы, заданные для символов обычного текста в зависимости от их контекста. Некоторые примеры:

  • Греческие символы назначаются GREEK_CHARSET.
  • Символы Hangul назначаются HANGUL_CHARSET.
  • Китайские символы назначаются SHIFTJIS_CHARSET , если рядом находятся символы kana или GB2312_CHARSET , если нет каны рядом.
  • Не нейтральные символы ANSI назначаются ANSI_CHARSET в любом случае.

Примечание.

Элемент управления расширенными изменениями внутренне использует Юникод, поэтому это использование наборов символов отличается от исходного, используемого в спецификациях шрифтов. Но структура CHARFORMAT имеет четко определенное место для набора символов.

 

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

Это важно знать

Технологии

Необходимые компоненты

  • C/C++
  • Программирование пользовательского интерфейса Windows

Instructions

Использование привязки шрифтов в элементе управления "Расширенные изменения"

После назначения наборов символов rich Edit сканирует текст вокруг точки вставки вперед и назад, чтобы найти ближайшие шрифты, используемые для наборов символов. Если шрифт не найден для набора символов, Rich Edit использует шрифт, выбранный клиентом для этого набора символов. Если клиент не указал шрифт для набора символов, Rich Edit использует шрифт по умолчанию для этого набора символов. Если клиент хочет другого шрифта, клиент всегда может изменить его, но этот подход будет работать большую часть времени. Текущие варианты шрифта по умолчанию основаны на следующей таблице. Обратите внимание, что шрифты по умолчанию задаются для каждого процесса и существуют отдельные списки для использования пользовательского интерфейса и использования, отличных от пользовательского интерфейса.

Язык Имя шрифта пользовательского интерфейса Размер шрифта пользовательского интерфейса Имя шрифта, отличного от пользовательского интерфейса Размер шрифта, отличного от пользовательского интерфейса
Западный, CE, ME, вьетнамцы Tahoma 8 Arial 10
Японский Готика пользовательского интерфейса MS 9 MS P Готика 10
Корейский Gulim 9 Gulim 9
Упрощенный китайский Simsun 9 SimSun 10
Традиционный китайский PMingLiU 9 PMingLiU 9
Тайский MS Sans Serif 8 Tahoma 14
Символы Wingdings 8 Wingdings 10
Девангари Мангал 8 Мангал 10
Тамильский Латха 8 Латха 10
Грузин, армянин Arial Юникод 8 Arial Юникод 10

 

Таким образом, в таблице привязки шрифтов по умолчанию (записи имеют набор символов, имя шрифта и размер), Rich Edit позволяет ANSI_CHARSET соответствовать нескольким наборам символов, а соответствующий набор символов соответствует другим шрифтам на основе одного к одному. Более точно, расширенное редактирование использует ANSI_CHARSET выбор всякий раз, когда не найдена другая альтернатива. Вы сможете указать более подробную детализацию, чем это; например, назначьте определенный ARABIC_CHARSET для арабских запусков, определенный греческий шрифт для греческих запусков и т. д. Эта более подробная детализация также будет использоваться, если шрифт с требуемой меткой набора символов найден где-то в документе перед областью, связанной с шрифтом.

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

Замечания

Rich Edit 4.1. Чтобы задать шрифт по умолчанию для скрипта, вызовите EM_SETCHARFORMAT с CHARFORMAT2, указав значения для элементов yHeight, bCharSet, bPitchAndFamily, szFaceName и lcid. Кроме того, чтобы получить шрифт по умолчанию для определенной кодовой страницы, вызовите EM_GETCHARFORMAT с CHARFORMAT2, указав значения для элементов bCharSet и lcid.

Использование элементов управления расширенными изменениями

Демонстрация общих элементов управления Windows (CppWindowsCommonControls)