* * wrote:
"If the device context is passed as NULL and Uniscribe needs to access it for any reason, Uniscribe returns the error code E_PENDING. This code is returned quickly, allowing the application to avoid time-consuming SelectObject calls."
Whereas the current implementation will silently access an HDC even if the application passed NULL, which means the application doesn't get a chance to SelectObject the right font.
I have checked how this works by not selecting a font before the first ScriptShape. The test run works as as specified and Windows did not return E_PENDING in this case. My reading of uniscribe is that its not too fussy about what fonts you use and accepts what ever the default is in the HDC. The key thing is that once you have initialised a Script_Cache from a HDC then the font can't be changed cache.
Jeff