The Unicode Script Processor (USP10.dll), or Uniscribe, is the system engine used to shape and lay out complex scripts. (For more information, see Chapter 5, "Text Input, Output, and Display.") Extending beyond complex scripts, however, Uniscribe provides for Unicode text display in all Microsoft-supported scripts and languages. Uniscribe also supplies a script-independent interface for writing applications that display or edit formatted text. In addition, Uniscribe offers simple font fallback for all languages and enables support for OpenType typographic features. (For more information, see Chapter 5 and Chapter 20, "OpenType Fonts.")
In contrast, Uniscribe does not provide support for sorting, code-page translation, nor does it supply keyboards, spelling checkers, or grammar checkers. Furthermore, it does not furnish a markup language or object model for creating or manipulating formatted text.
The following sections contain information on Unicode support for text lines and text runs. You will see when to use this support, and when you should forego it, as well as what scripts and features have been added to various Uniscribe versions.
Uniscribe's text line support was developed to help handle international text for the Microsoft Win32 application programming interfaces (APIs) ExtTextOut and DrawText. This support includes the ScriptStringAnalyse,ScriptStringOut, and ScriptStringFree APIs and all the ScriptStringGet functions.
Don't use Uniscribe text line support if DrawText or ExtTextOut provides sufficient functionality. These functions are easier to use, and can be faster in simple script cases. Moreover, don't use text line support for text that has formatting changes within the line. Instead use Rich Edit or the Uniscribe text run APIs mentioned in the next section.
On the other hand, you should use Uniscribe's text line support API if you need the following extra features:
Uniscribe support for text runs was developed to effectively handle international text in formatted text display (such as in Microsoft Internet Explorer) and in editing applications (such as in Rich Edit). It is also used by the text line implementation. Text run APIs include ScriptItemize,ScriptShape, ScriptPlace, and ScriptTextOut.
Don't use text run support if you can utilize an easier formatted text interface such as one that Rich Edit furnishes. Instead, use it only if you are developing an edit control or a forms display package that requires formatted text.
Certain scripts and features have been added to Uniscribe versions, as shown in Table 24-1. As you look at the table, note that Arabic (1) refers to Arabic support for all Arabic font types supported by the Arabic version of Microsoft Windows 95/98/Millennium Edition (Me), and Microsoft Windows NT. Arabic (2) adds support for new OpenType features required for fonts such as those with a descending baseline.
Table 24-1 Scripts and features added to Uniscribe versions.
Scripts and Features | Version | Shipped With |
Arabic (1), Hebrew, Thai | 173 | Microsoft Internet Explorer 4 complex-script version |
Arabic (2), Devanagari, Tamil, Vietnamese, East Asian supplementary planes | 325 | Microsoft Windows 2000, Microsoft Office 2000, Microsoft Internet Explorer 5 |
Gurmukhi, Gujarati, Kannada, Telugu, Old Hangul, Syriac, Thanna, East Asian vertical | 407 | Microsoft Windows XP, Microsoft Office XP, Microsoft Internet Explorer 6 |