структура 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
Значение, указывающее, содержит ли скрипт только цифры и другие символы, используемые при записи чисел правилами двунаправленного алгоритма Юникода. Например, символы валюты, разделитель тысяч и десятичная запятая классифицируются как числовые, если они находятся рядом с цифрами или между ними. Возможные значения для этого элемента определены в следующей таблице.
fComplex
Значение, указывающее сложный скрипт для языка, требующего специального формирования или макета. Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Сценарий требует специального формирования или макета. |
|
Скрипт не содержит комбинирующих символов и не требует контекстного формирования или изменения порядка. |
fNeedsWordBreaking
Значение, указывающее тип размещения разбиения по словам для языка. Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Язык имеет размещение разбиения по словам, которое требует от приложения вызова ScriptBreak и включает позиции символов, помеченные элементом fWordStop в SCRIPT_LOGATTR. |
|
Word размещение разрывов определяется путем сканирования символов, помеченных элементом fWhiteSpace в SCRIPT_LOGATTR, или глифов, помеченных значением SCRIPT_JUSTIFY_BLANK или SCRIPT_JUSTIFY_ARABIC_BLANK для элемента uJustificationSCRIPT_VISATTR. |
fNeedsCaretInfo
Значение, указывающее, ограничен ли язык, например тайский или индийский, границами кластера. Возможные значения определены в следующей таблице. Чтобы определить допустимые позиции курсора, приложение проверяет значение fCharStop в логических атрибутах, полученных с помощью ScriptBreak, или сравнивает смежные значения в массиве pwLogClust , полученном ScriptShape.
Значение | Значение |
---|---|
|
Язык ограничивает размещение курсора границами кластера. |
|
Язык не ограничивает размещение курсора границами кластера. |
bCharSet
Номинальный набор символов, связанный со сценарием. Во время создания шрифта, подходящего для отображения скрипта, этот набор символов можно использовать в качестве значения элемента lfCharSetобъекта LOGFONT.
Для нового скрипта, не определяемого набором символов, приложение обычно должно задать для bCharSet значение DEFAULT_CHARSET. См. описание элемента fAmbiguousCharSet.
fControl
Значение, указывающее, используются ли в скрипте только управляющие символы. Возможные значения определены в следующей таблице. Обратите внимание, что каждый символ элемента управления не оказывается в SCRIPT_CONTROL структуре.
Значение | Значение |
---|---|
|
Задайте в скрипте только управляющие символы. |
|
Не устанавливайте в скрипте только управляющие символы. |
fPrivateUseArea
Значение, указывающее использование частной области использования— специального набора символов, который определяется в частном порядке для диапазона Юникода от U+E000 до U+F8FF. Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Используйте частную область использования. |
|
Не используйте частную область использования. |
fNeedsCharacterJustify
Значение, указывающее на обработку обоснования для сценария путем увеличения всех пробелов между буквами, а не только пробелов между словами. Возможные значения определены в следующей таблице. При выполнении межсимвого обоснования Uniscribe вставляет дополнительное пространство только после глифов, помеченных значением SCRIPT_JUSTIFY_CHARACTER для элемента uJustificationSCRIPT_VISATTR.
Значение | Значение |
---|---|
|
Используйте обоснование символов. |
|
Не используйте обоснование символов. |
fInvalidGlyph
Значение, указывающее, создает ли ScriptShape недопустимый глиф для скрипта, представляющего недопустимые последовательности. Возможные значения определены в следующей таблице. Приложение может получить индекс глифа недопустимого глифа для определенного шрифта, вызвав ScriptGetFontProperties.
Значение | Значение |
---|---|
|
Создайте недопустимый глиф для представления недопустимых последовательностей. |
|
Не создавайте недопустимый глиф для представления недопустимых последовательностей. |
fInvalidLogAttr
Значение, указывающее, помечает ли ScriptBreak недопустимые сочетания для скрипта, задав fInvalid в буфере логических атрибутов. Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Пометьте недопустимые сочетания для скрипта. |
|
Не помечайте недопустимые сочетания для скрипта. |
fCDM
Значение, указывающее, содержит ли скрипт элемент, проанализированный ScriptItemize как включающий объединение диакритических меток (от U+0300 до U+36F). Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Скрипт содержит элемент, включающий сочетание диакритических знаков. |
|
Скрипт не содержит элемент, включающий сочетание диакритических знаков. |
fAmbiguousCharSet
Значение, указывающее, содержит ли скрипт символы, поддерживаемые несколькими наборами символов. Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Скрипт содержит символы, поддерживаемые несколькими наборами символов. В этом случае элемент bCharSet этой структуры следует игнорировать, а для элемента lfCharSetlogFONT следует задать значение DEFAULT_CHARSET. Дополнительные сведения см. в разделе "Примечания". |
|
Скрипт не содержит символов, поддерживаемых несколькими наборами символов. |
fClusterSizeVaries
Значение, указывающее, может ли скрипт, например арабский, использовать контекстное формирование, которое приводит к увеличению размера строки во время удаления символов. Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Используйте переменный размер кластера для контекстного формирования. |
|
Не используйте переменный размер кластера для контекстного формирования. |
fRejectInvalid
Значение, указывающее, должен ли сценарий, например тайский, отклонять недопустимые последовательности, которые обычно вызывают в программе редактора, например Блокноте, звуковой сигнал и пропускание нажатий клавиш. Возможные значения определены в следующей таблице.
Значение | Значение |
---|---|
|
Отклонять недопустимые последовательности. |
|
Не отклоняйте недопустимые последовательности. |
Комментарии
Эта структура заполняется функцией 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 |