RE: Uniscribe for Win32 Unicoders

From: F. Avery Bishop (Exchange) (
Date: Tue Sep 21 1999 - 10:45:44 EDT

Good Qs. Please see my As below.

F. Avery Bishop
Program Manager, International Evangelism

-----Original Message-----
From: Glen Perkins []
Sent: Monday, September 20, 1999 9:10 PM
To: Unicode List
Subject: Uniscribe for Win32 Unicoders

In order to take Microsoft's suggestion and base most new applications on
Unicode (internally) and Uniscribe, we need to know some things about
Uniscribe that perhaps our Microsoft representatives could comment on:

1) Where can we obtain the current header (USP10.H) and library (USP10.LIB)
files to match the current (IE5) version of Uniscribe (USP10.DLL)? Are they
included in the Service Pack 3 update of Visual C++ 6? Are they available
for separate download as a part of some SDK for fans of Unicode and complex
scripts? ;-)
> The header and LIB files will be available in the next SDK, available in
October I believe. I don't know about any SPs of Visual Studio, but I'll see
what I can find out.

Now that the "real" release version of Uniscribe (USP10.DLL) is being
installed by the IE5 and Office2000 installers, the old pre-release header
and library files available from the online MSJ site (accompanying the Nov.
1998 article by Avery Bishop) are out of date and will conflict with the
"real" Uniscribe already on our development machines (courtesy of IE5). We
need to know how to update our development systems (VC++6) to incorporate
the release version of Uniscribe.
> When you say conflict, do you mean you've found a binary incompatibility?
Our plan and intent was to develop USP10.DLL to be binary compatible with
any previous versions, so you should just be able to replace any existing
version or USP10.DLL with the newer version with no ill effects. If you've
run into problems when doing this (e.g., an AV in USP10.DLL) please let me

2) Does the use of Uniscribe require that the compiler options be set to
"_Unicode", or can we continue to use "_MBCS" and handle Unicode conversions
internally (e.g. MultiByteToWideChar)?
>No, yes. Uniscribe only handles Unicode, but it's an independent module
that doesn't care how you got the Unicode text you pass it. For example, it
doesn't care that some text string has a secret scandalous past as an ANSI
string, having undergone a cathartic conversion to the one and only true
Unicode encoding before showing up at Uniscribe's door. :-)

In the Nov. 1998 and Apr. 1999 articles on the various options for running
Unicode apps on Win9x, I couldn't quite tell whether the "Uniscribe option"
*required* compilation as a "_Unicode" app, or whether it didn't care.

3) Is there any tutorial information available for Uniscribe other than the
MSJ article? (Not tutorials on Unicode itself, but on the use of Uniscribe
for people who already understand Unicode.) Does the MSJ sample app still
work with the release version of Uniscribe?
> The CSSAMP sample that accompanied that article has been updated and added
to the SDK. There is also information about Uniscribe in the October MSDN
help files.

4) The MSJ article, written nearly a year ago about the pre-release
Uniscribe, said it would work on any "Non-Far East" version of Win95 and on
all versions of Win98 and all WinNT versions 4.0 or later. The *current*
online MSDN docs say the following regarding almost every Uniscribe

  Windows NT/2000: Requires Windows 2000.
  Windows 95/98: Unsupported.
  Windows CE: Unsupported.
  Header: Declared in usp10.h.
  Import Library: Use usp10.lib.

See the docs for ScriptTextOut at:

for example. (Note, that's a single, long URL, not two.) This seems to say
that, while it may be hacked into appearing to work on Win9x and NT4, it
shouldn't be used on anything other than Win2000, because only Win2000 is
actually supported. It seems to be saying that smart developers will avoid
using Uniscribe on anything other than machines that may or may not begin to
appear next year. That's a difference between running on ~90% of the Win32
installed base and <0.1% of the Win32 installed base -- the difference
between a real business opportunity and a science project. What's the truth?
> See below.

5) The MSJ article says that Uniscribe will be redistributable by
developers. Is it? How? Is it officially redistributable to Win9x users? Is
there an online installer at some URL we can point them to? (Something short
of the massive IE5, of course.) Can we include it in our own installer
program? Is the USP10.DLL sufficient, or would other auxiliary DLLs also
have to be distributed with it?
> USP10.DLL is redistributable through IE5. Microsoft views Internet
Explorer as the platform, and Uniscribe is native to IE5. So it works with
Windows 2000 because IE5 is integrated into Windows 2000. If you install IE5
on one of the downlevel platforms mentioned above, then Uniscribe will run,
although the results for some scripts will not be correct on Far East
versions of Windows 95.

6) Is there any mailing list, newsgroup, bug list, even a FAQ, for
developers using Uniscribe? I note that there isn't a single instance of the
word "Uniscribe" anywhere in the Microsoft Knowledge Base. Either this
product is completely "issue"-free, or nobody is using it (yet?), or there
is a forum where all the issues and users go that I haven't managed to find
> Uniscribe is new, and fairly specialized in that it's only needed by apps
that need to display formatted complex scripts. Most app developers get all
the complex script support they need through the standard Win32 API calls
(ExtTextOutW, DrawTextW, GetTextExtentPointW, etc.) and standard system
controls (edit, static, etc.). These standard components support complex
scripts through Uniscribe, and hide it's complexity from developers. We
encourage developers to use these simpler approaches if they can. This is
why there are no KB articles and no FAQs yet. We do plan to add KB articles
and other sources of information as required in the future.

I hope I'm not the only one who would like to know the answers to these
questions. I think Uniscribe will do a lot for the cause of Unicode and
multilinual software on Win32 once a few of us figure out how to use it and
deploy it and start spreading the word.
> As a fan of Uniscribe myself, I also hope you're not the only one who
wants to know the answers to these questions :-)

Glen Perkins

> dou itashimashite

This archive was generated by hypermail 2.1.2 : Tue Jul 10 2001 - 17:20:53 EDT