Condividi tramite


Memorizzazione nella cache (internazionalizzazione)

Uniscribe salva i mapping Unicode-to-glyph (cmap), le larghezze dei glifi e le tabelle di formattazione degli script OpenType. Un puntatore alle tabelle per un particolare carattere di una determinata dimensione è chiamato "cache di script". Molte funzioni Uniscribe chiamano sia un parametro handle del contesto di dispositivo che un puntatore a una struttura SCRIPT_CACHE. Queste funzioni cercano prima di tutto informazioni tramite la cache di script, usando il contesto di dispositivo solo quando le tabelle richieste non sono già memorizzate nella cache. Quando si chiama la funzione ScriptShape, ScriptPlace, o ScriptTextOut, l'applicazione deve passare un puntatore a una struttura SCRIPT_CACHE. L'handle deve essere inizializzato a NULL prima che l'applicazione lo passi per la prima volta a una funzione Uniscribe. L'applicazione non deve mai passare lo stesso handle per tipi di carattere diversi o dimensioni diverse.

Un'applicazione può liberare una cache di script in qualsiasi momento. Uniscribe mantiene i conteggi dei riferimenti nella cache del tipo di carattere e del shaper, libera i dati dei tipi di carattere solo quando tutte le dimensioni del tipo di carattere vengono liberate e libera i dati del shaper solo quando tutti i tipi di carattere supportati dal shaper vengono liberati. Quando l'applicazione viene eseguita con uno stile, deve chiamare la funzione ScriptFreeCache per liberare la cache degli script per lo stile.

Per ScriptShape e ScriptPlace, è valido per l'applicazione passare un contesto di dispositivo null. La maggior parte delle volte la chiamata avrà esito positivo, perché le tabelle richieste sono già memorizzate nella cache. Se la modellazione o il posizionamento richiede l'accesso a un contesto di dispositivo, ScriptShape o ScriptPlace restituiscono immediatamente con il codice di errore E_PENDING. L'applicazione deve quindi selezionare il tipo di carattere nel contesto del dispositivo. Per la maggior parte delle applicazioni, questo migliora le prestazioni evitando la preparazione ripetuta di un handle del contesto di dispositivo con chiamate a SelectObject.

Utilizzo di Uniscribe