(usp10.h) SCRIPT_PROPERTIES 结构
包含有关每个脚本的特殊处理的信息。
语法
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
指示脚本是否仅包含数字以及 Unicode 双向算法规则写入数字时使用的其他字符的值。 例如,货币符号、千位分隔符和小数点在与数字相邻或数字之间时被分类为数字。 下表中定义了此成员的可能值。
值 | 含义 |
---|---|
|
该脚本仅包含 Unicode 双向算法规则在写入数字时使用的数字和其他字符。 |
|
根据 Unicode 双向算法的规则,该脚本不只包含数字和写入数字时使用的其他字符。 |
fComplex
指示需要特殊形状或布局的语言的复杂脚本的值。 下表中定义了可能的值。
值 | 含义 |
---|---|
|
该脚本需要特殊的形状或布局。 |
|
该脚本不包含组合字符,也不需要上下文调整或重新排序。 |
fNeedsWordBreaking
指示语言的分词位置类型的值。 下表中定义了可能的值。
值 | 含义 |
---|---|
|
该语言的分词位置要求应用程序调用 ScriptBreak,并在SCRIPT_LOGATTR中包含由 fWordStop 成员标记的字符位置。 |
|
通过扫描SCRIPT_LOGATTR中由 fWhiteSpace 成员标记的字符,或扫描由SCRIPT_VISATTR的 uJustification 成员的值SCRIPT_JUSTIFY_BLANK或SCRIPT_JUSTIFY_ARABIC_BLANK标记的字形来标识Word中断位置。 |
fNeedsCaretInfo
指示语言(例如泰语或印度语)将脱字号放置限制为群集边界的值。 下表中定义了可能的值。 为了确定有效的插入点位置,应用程序检查 ScriptBreak 检索的逻辑属性中的 fCharStop 值,或比较 ScriptShape 检索的 pwLogClust 数组中的相邻值。
值 | 含义 |
---|---|
|
该语言将插入点位置限制为群集边界。 |
|
该语言不会将插入点放置限制为群集边界。 |
bCharSet
与脚本关联的名义字符集。 在创建适合显示脚本的字体期间,此字符集可用作 LOGFONT 的 lfCharSet 成员的值。
对于未定义字符集的新脚本,应用程序通常应将 bCharSet 设置为 DEFAULT_CHARSET。 请参阅成员 fAmbiguousCharSet 的说明。
fControl
指示脚本中是否仅使用控制字符的值。 下表中定义了可能的值。 请注意,每个控制字符最终不会以 SCRIPT_CONTROL 结构结束。
值 | 含义 |
---|---|
|
在脚本中仅设置控制字符。 |
|
不要在脚本中仅设置控制字符。 |
fPrivateUseArea
指示使用专用区域的值,这是为 Unicode 范围 U+E000 到 U+F8FF 私下定义的一组特殊字符。 下表中定义了可能的值。
值 | 含义 |
---|---|
|
使用专用区域。 |
|
请勿使用专用区域。 |
fNeedsCharacterJustify
指示通过增加字母之间的所有空格(而不仅仅是单词之间的空格)来处理脚本理由的值。 下表中定义了可能的值。 执行字符间对齐时,Uniscribe 仅在标有SCRIPT_VISATTR的 uJustification 成员的SCRIPT_JUSTIFY_CHARACTER值的字形之后插入额外的空格。
值 | 含义 |
---|---|
|
使用字符对齐。 |
|
不要使用字符对齐。 |
fInvalidGlyph
指示 ScriptShape 是否为脚本生成无效字形以表示无效序列的值。 下表中定义了可能的值。 应用程序可以通过调用 ScriptGetFontProperties 获取特定字体无效字形的字形索引。
值 | 含义 |
---|---|
|
生成表示无效序列的无效字形。 |
|
请勿生成无效字形来表示无效序列。 |
fInvalidLogAttr
指示 ScriptBreak 是否通过在逻辑属性缓冲区中设置 fInvalid 来标记脚本无效组合的值。 下表中定义了可能的值。
值 | 含义 |
---|---|
|
为脚本标记无效的组合。 |
|
不要为脚本标记无效的组合。 |
fCDM
指示脚本是否包含已由 ScriptItemize 分析的项的值,该值包括将音调符号 (U+0300 到 U+36F) 。 下表中定义了可能的值。
值 | 含义 |
---|---|
|
该脚本包含一个包含组合音调符号的项。 |
|
该脚本不包含包含组合音调符号的项。 |
fAmbiguousCharSet
指示脚本是否包含多个字符集支持的字符的值。 下表中定义了可能的值。
值 | 含义 |
---|---|
|
该脚本包含多个字符集支持的字符。 在这种情况下,应忽略此结构的 bCharSet 成员,并且 LOGFONT 的 lfCharSet 成员应设置为 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 |