Almacenamiento en caché (Internacionalización)
Uniscribe guarda las asignaciones de unicode a glifo (cmap), los anchos del glifo y las tablas de forma de script OpenType. Un identificador de las tablas para una fuente determinada de un tamaño determinado se denomina "caché de scripts". Muchas funciones Uniscribe llaman a para un parámetro de controlador de contexto de dispositivo y un puntero a una estructura de SCRIPT_CACHE . Estas funciones buscan primero información a través de la memoria caché de scripts, con el contexto del dispositivo solo cuando las tablas necesarias aún no están almacenadas en caché. Al llamar a la función ScriptShape, ScriptPlace o ScriptTextOut , la aplicación debe pasar un puntero a una estructura de SCRIPT_CACHE . El identificador se debe inicializar en NULL antes de la primera vez que la aplicación la pasa a una función Uniscribe. La aplicación nunca debe pasar el mismo identificador para diferentes fuentes o tamaños diferentes.
Una aplicación puede liberar una caché de scripts en cualquier momento. Uniscribe mantiene los recuentos de referencias en sus memorias caché de fuentes y conformadores, libera los datos de fuente solo cuando se liberan todos los tamaños de la fuente y libera los datos del conformador solo cuando se liberan todas las fuentes que admite el conformador. Cuando la aplicación haya terminado con un estilo, debe llamar a la función ScriptFreeCache para liberar la caché de scripts para el estilo.
Para ScriptShape y ScriptPlace, es válido para que la aplicación pase un contexto de dispositivo nulo. La mayoría de las veces, la llamada se realizará correctamente, ya que las tablas necesarias ya están almacenadas en caché. Si la forma o colocación requiere acceso a un contexto de dispositivo, ScriptShape o ScriptPlace devuelve inmediatamente con el código de error E_PENDING. A continuación, la aplicación debe seleccionar la fuente en el contexto del dispositivo. Para la mayoría de las aplicaciones, esto ayuda al rendimiento evitando la preparación repetida de un identificador de contexto de dispositivo con llamadas a SelectObject.