共用方式為


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

值,指出文稿是否只包含數位,以及 Unicode 雙向演算法規則用來寫入數位的其他字元。 例如,貨幣符號、千位分隔符和小數點會在數字相鄰或之間分類為數值。 下表定義了這個成員的可能值。

意義
TRUE
腳本只包含數位,以及 Unicode 雙向演算法規則用來寫入數位的其他字元。
FALSE
腳本不只包含 Unicode 雙向演算法規則撰寫數位時所使用的數位和其他字元。

fComplex

值,指出需要特殊成形或配置之語言的複雜腳本。 下表中定義了可能的值。

意義
TRUE
腳本需要特殊的成形或版面配置。
FALSE
腳本不包含合併字元,而且不需要內容成形或重新排序。

fNeedsWordBreaking

值,指出語言的斷詞位置類型。 下表中定義了可能的值。

意義
TRUE
此語言具有斷詞位置,需要應用程式呼叫 ScriptBreak ,且包含 由 fWordStop 成員標示在 SCRIPT_LOGATTR 中的字元位置。
FALSE
Word 中斷位置是藉由掃描SCRIPT_LOGATTR中 fWhiteSpace 成員所標示的字元,或是SCRIPT_JUSTIFY_BLANK值標示的字元,或SCRIPT_JUSTIFY_ARABIC_BLANK來識別SCRIPT_VISATTRuJustification 成員。

fNeedsCaretInfo

值,指出語言例如泰文或印度文是否限制插入號放置至叢集界限。 下表中定義了可能的值。 若要判斷有效的插入號位置,應用程式會檢查 ScriptBreak 所擷取之邏輯屬性中的 fCharStop 值,或比較 ScriptShape 所擷取之 pwLogClust 陣列中的相鄰值。

注意ScriptXtoCPScriptCPtoX 會自動套用插入號放置限制。
 
意義
TRUE
語言會將插入號放置限制為叢集界限。
FALSE
語言不會將插入號放置限制為叢集界限。

bCharSet

與腳本相關聯的具名字符集。 在建立適合顯示文本的字型期間,此字元集可作為LOGFONTlfCharSet成員的值。

對於未定義字元集的新腳本,應用程式通常應該將 bCharSet 設定為 DEFAULT_CHARSET。 請參閱成員 fAmbiguousCharSet 的描述。

fControl

值,指出文稿中是否只使用控制字元。 下表中定義了可能的值。 請注意,每個控制字元最後都不會出現在 SCRIPT_CONTROL 結構中。

意義
TRUE
只設定文稿中的控制字元。
FALSE
請勿只在文稿中設定控制字元。

fPrivateUseArea

值,指出使用私人使用區域,這是針對 Unicode 範圍 U+E000 到 U+F8FF 私下定義的一組特殊字元。 下表中定義了可能的值。

意義
TRUE
使用私人使用區域。
FALSE
請勿使用私人使用區域。

fNeedsCharacterJustify

值,指出腳本理由的處理方式是增加字母之間的所有空格,而不只是單字之間的空格。 下表中定義了可能的值。 執行字元間對齊時,Uniscribe 只會在標示為 SCRIPT_VISATTRuJustification 成員的 SCRIPT_JUSTIFY_CHARACTER 值之後,才插入額外的空間。

意義
TRUE
使用字元理由。
FALSE
請勿使用字元理由。

fInvalidGlyph

值,指出 ScriptShape 是否產生無效的字元,讓腳本代表無效的序列。 下表中定義了可能的值。 應用程式可以藉由呼叫 ScriptGetFontProperties,取得特定字型無效字元的字元索引。

意義
TRUE
產生無效的字元來表示無效的序列。
FALSE
請勿產生無效的字元來表示無效的序列。

fInvalidLogAttr

值,指出 ScriptBreak 是否在邏輯屬性緩衝區中設定 fInvalid 來標記腳本的無效組合。 下表中定義了可能的值。

意義
TRUE
標記文本的無效組合。
FALSE
請勿標記文本的無效組合。

fCDM

值,指出腳本是否包含 ScriptItemize 所分析的專案,包括合併 Diacritical 標記 (U+0300 到 U+36F) 。 下表中定義了可能的值。

意義
TRUE
文稿包含包含合併讀音符號的專案。
FALSE
文本不包含包含合併讀音符號的專案。

fAmbiguousCharSet

值,指出文稿是否包含多個字元集所支援的字元。 下表中定義了可能的值。

意義
TRUE
文本包含多個字元集所支援的字元。 在此情況下,應該忽略這個結構的 bCharSet 成員,而 LOGFONTlfCharSet 成員應該設定為 DEFAULT_CHARSET。 如需詳細資訊,請參閱<備註>一節。
FALSE
文本不包含多個字元集所支援的字元。

fClusterSizeVaries

值,指出文稿,例如阿拉伯文,可能會使用內容成形,使字串在移除字元期間增加大小。 下表中定義了可能的值。

意義
TRUE
使用可變叢集大小進行內容成形。
FALSE
請勿使用變數叢集大小來進行內容成形。

fRejectInvalid

值,指出文稿例如泰文是否應該拒絕無效的序列,這些序列通常會造成編輯器程式,例如記事本,叫用並忽略按鍵。 下表中定義了可能的值。

意義
TRUE
拒絕無效的序列。
FALSE
請勿拒絕無效的序列。

備註

此結構是由 ScriptGetProperties 函式 填入。

許多 Uniscribe 腳本不會直接對應至 8 位字元集。 當腳本中的部分字元由多個字元集支援時, 會設定 fAmbousCharSet 成員。 應用程式應該進行進一步的處理,以判斷在要求適合執行之字型時要使用的字元集。 例如,它可能會判斷執行是由多種語言所組成,並分割回合,讓每個語言使用不同的字型。

應用程式會在初始化期間使用下列程式代碼,以取得 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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 usp10.h

另請參閱

語言識別碼

SCRIPT_CONTROL

SCRIPT_LOGATTR

SCRIPT_VISATTR

ScriptBreak

ScriptCPtoX

ScriptGetFontProperties

ScriptGetProperties

ScriptItemize

ScriptShape

ScriptXtoCP

Uniscribe

Uniscribe 結構