Condividi tramite


Memorizzazione nella cache (internazionalizzazione)

Uniscribe salva i mapping unicode-to-glyph (cmap), la larghezza deglifi e le tabelle di data shaping degli script OpenType. Un handle per le tabelle per un tipo di carattere specifico di una determinata dimensione è denominato "cache di script". Molte funzioni Uniscribe chiamano sia per un parametro di handle del contesto di dispositivo che per 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 su NULL prima della prima volta che l'applicazione la passa 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 nelle cache dei tipi di carattere e 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 vengono liberati tutti i tipi di carattere supportati dal shaper. 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. Spesso la chiamata avrà esito positivo, perché le tabelle richieste sono già memorizzate nella cache. Se il data shaping o il posizionamento richiede l'accesso a un contesto di dispositivo, ScriptShape o ScriptPlace restituisce 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, ciò consente di evitare la preparazione ripetuta di un handle del contesto di dispositivo con chiamate a SelectObject.

Uso di Uniscribe