Cache (internacionalização)

Uniscribe salva mapeamentos Unicode para glifo (cmap), larguras de glifo e tabelas de formatação de script OpenType. Um identificador para as tabelas de uma fonte específica de um tamanho específico é chamado de "cache de script". Muitas funções Uniscribe chamam um parâmetro de identificador de contexto de dispositivo e um ponteiro para uma estrutura SCRIPT_CACHE . Essas funções procuram primeiro informações por meio do cache de script, usando o contexto do dispositivo somente quando as tabelas necessárias ainda não estiverem armazenadas em cache. Ao chamar a função ScriptShape, ScriptPlace ou ScriptTextOut , o aplicativo deve passar um ponteiro para uma estrutura SCRIPT_CACHE . O identificador deve ser inicializado para NULL antes da primeira vez que o aplicativo o passa para uma função Uniscribe. O aplicativo nunca deve passar o mesmo identificador para fontes diferentes ou tamanhos diferentes.

Um aplicativo pode liberar um cache de script a qualquer momento. Uniscribe mantém contagens de referência em seus caches de fonte e shaper, libera dados de fonte somente quando todos os tamanhos da fonte são liberados e libera dados do shaper somente quando todas as fontes compatíveis com o shaper são liberadas. Quando o aplicativo terminar com um estilo, ele deverá chamar a função ScriptFreeCache para liberar o cache de script para o estilo.

Para ScriptShape e ScriptPlace, é válido que o aplicativo passe um contexto de dispositivo nulo. Na maioria das vezes, a chamada terá êxito, pois as tabelas necessárias já estão armazenadas em cache. Se a formatação ou posicionamento exigir acesso a um contexto de dispositivo, ScriptShape ou ScriptPlace retornará imediatamente com o código de erro E_PENDING. Em seguida, o aplicativo deve selecionar a fonte no contexto do dispositivo. Para a maioria dos aplicativos, isso ajuda o desempenho evitando a preparação repetida de um identificador de contexto de dispositivo com chamadas para SelectObject.

Usando Uniscribe