Udostępnij przez


Buforowanie (Internacjonalizacja)

Uniscribe zapisuje mapowania Unicode na glify (cmap), szerokości glifów i tabele do kształtowania skryptów OpenType. Uchwyt do tabel dla określonej czcionki o określonym rozmiarze nazywa się "pamięcią podręczną skryptów". Wiele funkcji uniscribe wywołuje zarówno parametr uchwytu kontekstu urządzenia, jak i wskaźnik do struktury SCRIPT_CACHE. Te funkcje najpierw szukają informacji za pośrednictwem pamięci podręcznej skryptów, używając kontekstu urządzenia tylko wtedy, gdy wymagane tabele nie są jeszcze buforowane. Podczas wywoływania funkcji ScriptShape, ScriptPlacelub ScriptTextOut aplikacja musi przekazać wskaźnik do struktury SCRIPT_CACHE. Dojście powinno zostać zainicjowane do NULL przed pierwszym przekazaniem go przez aplikację do funkcji Uniscribe. Aplikacja nigdy nie powinna używać tego samego uchwytu dla różnych czcionek lub różnych rozmiarów.

Aplikacja może zwolnić pamięć podręczną skryptów w dowolnym momencie. Uniscribe utrzymuje liczniki odniesień w pamięciach podręcznych czcionek i danych kształtowania, zwalnia dane czcionek tylko wtedy, gdy wszystkie rozmiary czcionki zostały zwolnione, i zwalnia dane kształtowania tylko wtedy, gdy wszystkie czcionki obsługiwane przez kształtowanie są zwolnione. Gdy aplikacja zakończy pracę ze stylem, powinna wywołać funkcję ScriptFreeCache, aby zwolnić skryptową pamięć podręczną dla stylu.

W przypadku ScriptShape i ScriptPlaceaplikacja może przekazać kontekst urządzenia o wartości null. Najczęściej wywołanie zakończy się pomyślnie, ponieważ wymagane tabele są już buforowane. Jeśli kształtowanie lub umieszczanie wymaga dostępu do kontekstu urządzenia, ScriptShape lub ScriptPlace zwraca natychmiast kod błędu E_PENDING. Następnie aplikacja musi wybrać czcionkę w kontekście urządzenia. W przypadku większości aplikacji poprawia to wydajność, unikając wielokrotnego przygotowywania dojścia kontekstu urządzenia za pomocą wywołań SelectObject.

Przy użyciu Uniscribe