Caching (Internationalisierung)

Uniscribe speichert Zuordnungen von Unicode-zu-Glyphen (cmap), Symbolbreiten und OpenType-Skripts zum Gestalten von Tabellen. Ein Handle für die Tabellen für eine bestimmte Schriftart einer bestimmten Größe wird als "Skriptcache" bezeichnet. Viele Uniscribe-Funktionen rufen sowohl für einen Handleparameter für den Gerätekontext als auch für einen Zeiger auf eine SCRIPT _ CACHE-Struktur auf. Diese Funktionen suchen zuerst nach Informationen über den Skriptcache und verwenden den Gerätekontext nur, wenn erforderliche Tabellen nicht bereits zwischengespeichert sind. Beim Aufrufen der ScriptShape-, ScriptPlace-oder ScriptTextOut-Funktion muss die Anwendung einen Zeiger auf eine SCRIPT _ CACHE-Struktur übergeben. Das Handle sollte mit NULL initialisiert werden, bevor die Anwendung es zum ersten Mal an eine Uniscribe-Funktion übergibt. Die Anwendung sollte nie dasselbe Handle für verschiedene Schriftarten oder Größen übergeben.

Eine Anwendung kann jederzeit einen Skriptcache frei geben. Uniscribe verwaltet Die Verweisanzahl in den Schriftart- und Shapercaches, gibt Schriftartdaten nur frei, wenn alle Schriftgrößen frei werden, und gibt Shaperdaten nur frei, wenn alle schriftarten, die der Shaper unterstützt, frei werden. Wenn die Anwendung mit einem Stil fertig ist, sollte sie die ScriptFreeCache-Funktion aufrufen, um den Skriptcache für den Stil frei zu geben.

Für ScriptShape und ScriptPlaceist es gültig, dass die Anwendung einen NULL-Gerätekontext übergibt. In den meisten Jahren ist der Aufruf erfolgreich, da die erforderlichen Tabellen bereits zwischengespeichert sind. Wenn die Gestaltung oder Platzierung Zugriff auf einen Gerätekontext erfordert, wird ScriptShape oder ScriptPlace sofort mit dem Fehlercode E _ PENDING zurückgegeben. Anschließend muss die Anwendung die Schriftart im Gerätekontext auswählen. Für die meisten Anwendungen hilft dies bei der Leistung, indem die wiederholte Vorbereitung eines Gerätekontexthandpunkts mit Aufrufen von SelectObject vermieden wird.

Verwenden von Uniscribe