ScriptTextOut 関数 (usp10.h)
指定したスクリプト図形のテキストを表示し、情報を配置します。
構文
HRESULT ScriptTextOut(
[in] const HDC hdc,
[in, out] SCRIPT_CACHE *psc,
[in] int x,
[in] int y,
[in] UINT fuOptions,
[in, optional] const RECT *lprc,
[in] const SCRIPT_ANALYSIS *psa,
[in] const WCHAR *pwcReserved,
[in] int iReserved,
[in] const WORD *pwGlyphs,
[in] int cGlyphs,
[in] const int *piAdvance,
[in, optional] const int *piJustify,
[in] const GOFFSET *pGoffset
);
パラメーター
[in] hdc
デバイス コンテキストを処理します。 詳細については、「 キャッシュ」を参照してください。 他の関連する Uniscribe 関数とは異なり、この関数はハンドルを必須として定義します。
[in, out] psc
スクリプト キャッシュを識別する SCRIPT_CACHE 構造体へのポインター。
[in] x
最初のグリフの x 座標の値。
[in] y
最初のグリフの y 座標の値。
[in] fuOptions
ExtTextOut の fuOptions パラメーターに相当するオプション。 このパラメーターは、ETO_CLIPPEDまたはETO_OPAQUE、両方の値、またはどちらの値にも設定できません。
[in, optional] lprc
表示のクリップに使用される四角形を含む RECT 構造体へのポインター。 アプリケーションでは、このパラメーターを NULL に設定できます。
[in] psa
ScriptItemize の以前の呼び出しから取得したSCRIPT_ANALYSIS構造体へのポインター。
[in] pwcReserved
予約; は NULL に設定する必要があります。
[in] iReserved
予約;は 0 である必要があります。
[in] pwGlyphs
ScriptShape の以前の呼び出しから取得したグリフの配列へのポインター。
[in] cGlyphs
pwGlyphs で示される配列内のグリフの数。 グリフの最大数は 65,536 です。
[in] piAdvance
ScriptPlace の以前の呼び出しから取得した事前幅の配列へのポインター。
[in, optional] piJustify
両端揃えの事前幅 (セルの幅) の配列へのポインター。 アプリケーションでは、このパラメーターを NULL に設定できます。
[in] pGoffset
結合グリフの x オフセットと y オフセットを含む GOFFSET 構造体へのポインター。
戻り値
処理が正常に終了した場合は 0 を返します。 関数が成功しない場合は、0 以外の HRESULT 値を返します。 アプリケーションは、 SUCCEEDED マクロと FAILED マクロを使用して戻り値をテストできます。
解説
この関数は、テキスト表示用のオペレーティング システム ExtTextOut 関数を呼び出します。 詳細については、「 Uniscribe でテキストを表示する」を参照してください。
fLogicalOrder メンバーが psa で示されるSCRIPT_ANALYSIS構造体に設定されていない限り、すべての配列は表示順序になります。
右から左にレンダリングされ、SCRIPT_ANALYSISの fLogicalOrder メンバーを強制して論理的な順序で生成された実行の 場合、アプリケーションは SetTextAlign (hdc, TA_RIGHT) を呼び出し、 ScriptTextOut を呼び出す前に右側の座標を指定する必要があります。
piJustify によって示される配列は、各グリフのセル幅を提供します。 グリフの幅が piAdvance で指定された未調整の幅と異なる場合、末尾の端にあるグリフ セルにスペースが追加または削除されます。 グリフは常にセルの先頭端に揃えられます。 このルールは、視覚的な順序でも適用されます。
グリフ セルを拡張すると、通常は空白の追加によって余分な領域が構成されます。 ただし、アラビア語スクリプトの場合、フォント内の最も短い kashida グリフに対して余分なスペースが不十分でない限り、1 つ以上の kashida グリフによって余分なスペースが構成されます。 最短の kashida の幅は、 ScriptGetFontProperties を呼び出すことによって使用できます。
アプリケーションは、文字列を ScriptTextOut で両端揃えする必要がある場合にのみ、piJustify の値を渡す必要があります。 通常、アプリケーションは NULL を渡す必要があります。
アプリケーションで ScriptTextOut を使用してメタファイルに書き込むのは、メタファイルがフォントの置換なしで再生されない限り (たとえば、スケーラブルなページ プレビューのために同じシステム上ですぐに再生される) 場合を除きます。 ScriptTextOut は、メタファイルにグリフ番号を記録します。 グリフ番号はフォントによって大きく異なるため、異なるフォントが置き換わると、ファイルが正しく再生される可能性は低いです。 たとえば、メタファイルが別のスケールで再生される場合、メタファイルに記録された CreateFont 要求は、TrueType フォントではなくビットマップに解決できます。 同様に、メタファイルが別のコンピューターで再生される場合は、要求されたフォントがインストールされていない可能性があります。 フォントに依存しない方法でメタファイルで複雑なスクリプトを記述するには、アプリケーションで ExtTextOut を使用して論理文字を直接書き込み、テキストが再生されるまでグリフの生成と配置が行われないようにする必要があります。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | usp10.h |
Library | Usp10.lib |
[DLL] | Usp10.dll |
再頒布可能パッケージ | Windows Me/98/95 のインターネット エクスプローラー 5 以降 |