キャッシュ (国際化)
Uniscribe は、Unicode からグリフ (cmap) へのマッピング、グリフ幅、および OpenType スクリプト シェイプ テーブルを保存します。 特定のサイズの特定のフォントのテーブルへのハンドルは、"スクリプト キャッシュ" と呼ばれます。 多くの Uniscribe 関数は、デバイス コンテキスト ハンドル パラメーターと SCRIPT_CACHE 構造体へのポインターの両方を呼び出します。 これらの関数は、必要なテーブルがまだキャッシュされていない場合にのみ、デバイス コンテキストを使用して、スクリプト キャッシュを介して最初に情報を検索します。 ScriptShape、ScriptPlace、または ScriptTextOut 関数を呼び出す場合、アプリケーションはSCRIPT_CACHE構造体へのポインターを渡す必要があります。 ハンドルは、アプリケーションが初めて Uniscribe 関数に渡す前に NULL に初期化する必要があります。 アプリケーションは、異なるフォントまたは異なるサイズに対して同じハンドルを渡すべきではありません。
アプリケーションは、スクリプト キャッシュをいつでも解放できます。 Uniscribe は、フォントおよびシェーパー キャッシュで参照カウントを保持し、フォントのすべてのサイズが解放された場合にのみフォント データを解放し、シェーパーがサポートするすべてのフォントが解放された場合にのみシェーパー データを解放します。 スタイルを使用してアプリケーションが完了したら、 ScriptFreeCache 関数を呼び出して、スタイルのスクリプト キャッシュを解放する必要があります。
ScriptShape と ScriptPlace の場合、アプリケーションが null デバイス コンテキストを渡すことが有効です。 必要なテーブルが既にキャッシュされているため、ほとんどの場合、呼び出しは成功します。 シェイプまたは配置でデバイス コンテキストへのアクセスが必要な場合、 ScriptShape または ScriptPlace は 、E_PENDINGエラー コードを使用して直ちにを返します。 その後、アプリケーションはデバイス コンテキストでフォントを選択する必要があります。 ほとんどのアプリケーションでは、 SelectObject の呼び出しでデバイス コンテキスト ハンドルが繰り返し準備されないようにすることで、パフォーマンスが向上します。