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 双方向アルゴリズムの規則によって数値を書き込む際に使用される数字と他の文字のみがスクリプトに含まれているかどうかを示す値。 たとえば、通貨記号、桁区切り記号、小数点は、数字に隣接する場合、または数字の間で数値として分類されます。 このメンバーに使用できる値を次の表に示します。
値 | 意味 |
---|---|
|
このスクリプトには、Unicode 双方向アルゴリズムの規則によって数値を書き込む場合に使用される数字とその他の文字のみが含まれています。 |
|
このスクリプトには、Unicode 双方向アルゴリズムの規則によって数値を書き込む場合に使用される数字とその他の文字のみが含まれていません。 |
fComplex
特別な整形またはレイアウトを必要とする言語の複雑なスクリプトを示す値。 次の表に、使用できる値を定義します。
値 | 意味 |
---|---|
|
スクリプトには、特別な整形またはレイアウトが必要です。 |
|
スクリプトには組み合わせ文字が含まれており、コンテキスト整形や並べ替えは必要ありません。 |
fNeedsWordBreaking
言語の単語区切りの配置の種類を示す値。 次の表に、使用できる値を定義します。
値 | 意味 |
---|---|
|
言語には、アプリケーションが ScriptBreak を呼び出す必要があり、SCRIPT_LOGATTRの fWordStop メンバーによってマークされた文字位置を含む単語区切りの配置があります。 |
|
Word区切り位置は、SCRIPT_LOGATTRの fWhiteSpace メンバーによってマークされた文字、または SCRIPT_VISATTR の uJustification メンバーの値SCRIPT_JUSTIFY_BLANKまたはSCRIPT_JUSTIFY_ARABIC_BLANKでマークされたグリフをスキャンすることによって識別されます。 |
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
論理属性バッファーに fInvalid を設定して、ScriptBreak がスクリプトの無効な組み合わせをマークするかどうかを示す値。 次の表に、使用できる値を定義します。
値 | 意味 |
---|---|
|
スクリプトの無効な組み合わせをマークします。 |
|
スクリプトの無効な組み合わせをマークしないでください。 |
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 [デスクトップ アプリのみ] |
Header | usp10.h |