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 を呼び出す必要があり、SCRIPT_LOGATTRの fWordStop メンバーによってマークされた文字位置を含む単語区切りの配置があります。
FALSE
Word区切り位置は、SCRIPT_LOGATTRの fWhiteSpace メンバーによってマークされた文字、または SCRIPT_VISATTR の uJustification メンバーの値SCRIPT_JUSTIFY_BLANKまたはSCRIPT_JUSTIFY_ARABIC_BLANKでマークされたグリフをスキャンすることによって識別されます。

fNeedsCaretInfo

言語 (タイ語やインド語など) がキャレット配置をクラスター境界に制限するかどうかを示す値。 次の表に、使用できる値を定義します。 有効なキャレット位置を決定するために、アプリケーションは ScriptBreak によって取得された論理属性の fCharStop 値を検査するか、ScriptShape によって取得された pwLogClust 配列内の隣接する値を比較します。

メモScriptXtoCP と ScriptCPtoX では 、キャレット配置の制限が自動的に適用されます。
 
値 意味
TRUE
この言語では、キャレットの配置がクラスターの境界に制限されます。
FALSE
この言語では、キャレットの配置をクラスター境界に制限しません。

bCharSet

スクリプトに関連付けられている名目文字セット。 スクリプトの表示に適したフォントを作成するときに、この文字セットを LOGFONT の lfCharSet メンバーの値として使用できます。

文字セットが定義されていない新しいスクリプトの場合、アプリケーションでは通常 、bCharSet を DEFAULT_CHARSET に設定する必要があります。 メンバー fAmbiguousCharSet の説明を参照してください。

fControl

スクリプトで制御文字のみが使用されるかどうかを示す値。 次の表に、使用できる値を定義します。 すべての制御文字が SCRIPT_CONTROL 構造になるわけではないことに注意してください。

値 意味
TRUE
スクリプト内の制御文字のみを設定します。
FALSE
スクリプト内の制御文字のみを設定しないでください。

fPrivateUseArea

プライベート使用領域の使用を示す値。Unicode 範囲 U+E000 ~ U+F8FF に対してプライベートに定義された特殊な文字セットです。 次の表に、使用できる値を定義します。

値 意味
TRUE
プライベート使用領域を使用します。
FALSE
プライベート使用領域は使用しないでください。

fNeedsCharacterJustify

単語間のスペースだけでなく、文字間のすべてのスペースを増やすことで、スクリプトの正当な理由の処理を示す値。 次の表に、使用できる値を定義します。 文字間の配置を実行する場合、Uniscribe は、SCRIPT_VISATTRの uJustification メンバーのSCRIPT_JUSTIFY_CHARACTER値でマークされたグリフの後にのみ余分なスペース を挿入します。

値 意味
TRUE
文字の正当な理由を使用します。
FALSE
文字の位置揃えは使用しないでください。

fInvalidGlyph

ScriptShape が無効なシーケンスを表すスクリプトの無効なグリフを生成するかどうかを示す値。 次の表に、使用できる値を定義します。 アプリケーションは、 ScriptGetFontProperties を呼び出すことによって、特定のフォントの無効なグリフのグリフ インデックスを取得できます。

値 意味
TRUE
無効なシーケンスを表す無効なグリフを生成します。
FALSE
無効なシーケンスを表す無効なグリフを生成しないでください。

fInvalidLogAttr

論理属性バッファーに fInvalid を設定して、ScriptBreak がスクリプトの無効な組み合わせをマークするかどうかを示す値。 次の表に、使用できる値を定義します。

値 意味
TRUE
スクリプトの無効な組み合わせをマークします。
FALSE
スクリプトの無効な組み合わせをマークしないでください。

fCDM

ScriptItemize によって分析された項目が含まれているかどうかを示す値。これには、分音記号の組み合わせ (U+0300 から U+36F) が含まれます。 次の表に、使用できる値を定義します。

値 意味
TRUE
スクリプトには、分音記号の組み合わせを含む項目が含まれています。
FALSE
このスクリプトには、分音記号の組み合わせを含む項目は含まれません。

fAmbiguousCharSet

スクリプトに複数の文字セットでサポートされている文字が含まれているかどうかを示す値。 使用できる値は、次の表で定義されています。

値 意味
TRUE
スクリプトには、複数の文字セットでサポートされている文字が含まれています。 この場合、この構造体の bCharSet メンバーは無視し、LOGFONT の lfCharSet メンバーを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 [デスクトップ アプリのみ]
Header usp10.h

こちらもご覧ください

言語識別子

SCRIPT_CONTROL

SCRIPT_LOGATTR

SCRIPT_VISATTR

ScriptBreak

ScriptCPtoX

ScriptGetFontProperties

ScriptGetProperties

ScriptItemize

ScriptShape

ScriptXtoCP

Uniscribe

Uniscribe 構造体