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


структура SCRIPT_PROPERTIES (usp10.h)

Содержит сведения о специальной обработке для каждого скрипта.

Синтаксис

typedef struct {
  DWORD langid : 16;
  DWORD fNumeric : 1;
  DWORD fComplex : 1;
  DWORD fNeedsWordBreaking : 1;
  DWORD fNeedsCaretInfo : 1;
  DWORD bCharSet : 8;
  DWORD fControl : 1;
  DWORD fPrivateUseArea : 1;
  DWORD fNeedsCharacterJustify : 1;
  DWORD fInvalidGlyph : 1;
  DWORD fInvalidLogAttr : 1;
  DWORD fCDM : 1;
  DWORD fAmbiguousCharSet : 1;
  DWORD fClusterSizeVaries : 1;
  DWORD fRejectInvalid : 1;
} SCRIPT_PROPERTIES;

Члены

langid

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

fNumeric

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

Значение Значение
TRUE
Скрипт содержит только цифры и другие символы, используемые при записи чисел правилами двунаправленного алгоритма Юникода.
FALSE
Скрипт содержит не только цифры и другие символы, используемые при записи чисел правилами двунаправленного алгоритма Юникода.

fComplex

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

Значение Значение
TRUE
Сценарий требует специального формирования или макета.
FALSE
Скрипт не содержит комбинирующих символов и не требует контекстного формирования или изменения порядка.

fNeedsWordBreaking

Значение, указывающее тип размещения разбиения по словам для языка. Возможные значения определены в следующей таблице.

Значение Значение
TRUE
Язык имеет размещение разбиения по словам, которое требует от приложения вызова ScriptBreak и включает позиции символов, помеченные элементом fWordStop в SCRIPT_LOGATTR.
FALSE
Word размещение разрывов определяется путем сканирования символов, помеченных элементом fWhiteSpace в SCRIPT_LOGATTR, или глифов, помеченных значением SCRIPT_JUSTIFY_BLANK или SCRIPT_JUSTIFY_ARABIC_BLANK для элемента uJustificationSCRIPT_VISATTR.

fNeedsCaretInfo

Значение, указывающее, ограничен ли язык, например тайский или индийский, границами кластера. Возможные значения определены в следующей таблице. Чтобы определить допустимые позиции курсора, приложение проверяет значение fCharStop в логических атрибутах, полученных с помощью ScriptBreak, или сравнивает смежные значения в массиве pwLogClust , полученном ScriptShape.

Примечание. ScriptXtoCP и ScriptCPtoX автоматически применяют ограничения размещения курсора.
 
Значение Значение
TRUE
Язык ограничивает размещение курсора границами кластера.
FALSE
Язык не ограничивает размещение курсора границами кластера.

bCharSet

Номинальный набор символов, связанный со сценарием. Во время создания шрифта, подходящего для отображения скрипта, этот набор символов можно использовать в качестве значения элемента lfCharSetобъекта LOGFONT.

Для нового скрипта, не определяемого набором символов, приложение обычно должно задать для bCharSet значение DEFAULT_CHARSET. См. описание элемента fAmbiguousCharSet.

fControl

Значение, указывающее, используются ли в скрипте только управляющие символы. Возможные значения определены в следующей таблице. Обратите внимание, что каждый символ элемента управления не оказывается в SCRIPT_CONTROL структуре.

Значение Значение
TRUE
Задайте в скрипте только управляющие символы.
FALSE
Не устанавливайте в скрипте только управляющие символы.

fPrivateUseArea

Значение, указывающее использование частной области использования— специального набора символов, который определяется в частном порядке для диапазона Юникода от U+E000 до U+F8FF. Возможные значения определены в следующей таблице.

Значение Значение
TRUE
Используйте частную область использования.
FALSE
Не используйте частную область использования.

fNeedsCharacterJustify

Значение, указывающее на обработку обоснования для сценария путем увеличения всех пробелов между буквами, а не только пробелов между словами. Возможные значения определены в следующей таблице. При выполнении межсимвого обоснования Uniscribe вставляет дополнительное пространство только после глифов, помеченных значением SCRIPT_JUSTIFY_CHARACTER для элемента uJustificationSCRIPT_VISATTR.

Значение Значение
TRUE
Используйте обоснование символов.
FALSE
Не используйте обоснование символов.

fInvalidGlyph

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

Значение Значение
TRUE
Создайте недопустимый глиф для представления недопустимых последовательностей.
FALSE
Не создавайте недопустимый глиф для представления недопустимых последовательностей.

fInvalidLogAttr

Значение, указывающее, помечает ли ScriptBreak недопустимые сочетания для скрипта, задав fInvalid в буфере логических атрибутов. Возможные значения определены в следующей таблице.

Значение Значение
TRUE
Пометьте недопустимые сочетания для скрипта.
FALSE
Не помечайте недопустимые сочетания для скрипта.

fCDM

Значение, указывающее, содержит ли скрипт элемент, проанализированный ScriptItemize как включающий объединение диакритических меток (от U+0300 до U+36F). Возможные значения определены в следующей таблице.

Значение Значение
TRUE
Скрипт содержит элемент, включающий сочетание диакритических знаков.
FALSE
Скрипт не содержит элемент, включающий сочетание диакритических знаков.

fAmbiguousCharSet

Значение, указывающее, содержит ли скрипт символы, поддерживаемые несколькими наборами символов. Возможные значения определены в следующей таблице.

Значение Значение
TRUE
Скрипт содержит символы, поддерживаемые несколькими наборами символов. В этом случае элемент bCharSet этой структуры следует игнорировать, а для элемента lfCharSetlogFONT следует задать значение DEFAULT_CHARSET. Дополнительные сведения см. в разделе "Примечания".
FALSE
Скрипт не содержит символов, поддерживаемых несколькими наборами символов.

fClusterSizeVaries

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

Значение Значение
TRUE
Используйте переменный размер кластера для контекстного формирования.
FALSE
Не используйте переменный размер кластера для контекстного формирования.

fRejectInvalid

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

Значение Значение
TRUE
Отклонять недопустимые последовательности.
FALSE
Не отклоняйте недопустимые последовательности.

Комментарии

Эта структура заполняется функцией ScriptGetProperties .

Многие скрипты Uniscribe не соответствуют напрямую 8-разрядным наборам символов. Если некоторые символы в скрипте поддерживаются несколькими наборами символов, задается элемент fAmbiguousCharSet . Приложение должно выполнить дальнейшую обработку, чтобы определить набор символов, используемый при запросе шрифта, подходящего для выполнения. Например, он может определить, что выполнение состоит из нескольких языков, и разделить выполнение таким образом, чтобы для каждого языка использовался отдельный шрифт.

Приложение использует приведенный ниже код во время инициализации, чтобы получить указатель на массив SCRIPT_PROPERTIES .

const SCRIPT_PROPERTIES **ppScriptProperties; // Array of pointers  
                                              // to properties 
int iMaxScript;
HRESULT hr;

hr = ScriptGetProperties(&ppScriptProperties, &iMaxScript);

Затем приложение может проверить свойства скрипта элемента, как показано в следующем примере.

hr = ScriptItemize(pwcInChars, cInChars, cMaxItems, psControl, psState, pItems, pcItems);
//...
if (ppScriptProperties[pItems[iItem].a.eScript]->fNeedsCaretInfo) 
    {
        // Use ScriptBreak to restrict the caret from entering clusters (for example). 
    }

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть usp10.h

См. также раздел

Идентификаторы языка

SCRIPT_CONTROL

SCRIPT_LOGATTR

SCRIPT_VISATTR

ScriptBreak

ScriptCPtoX

ScriptGetFontProperties

ScriptGetProperties

ScriptItemize

ScriptShape

ScriptXtoCP

Одноимесяца

Структуры неописуемого