Uniscribe

Last updated

Uniscribe is the Microsoft Windows set of services for rendering Unicode-encoded text, supporting complex text layout. It is implemented in the dynamic link library USP10.DLL. Uniscribe was released with Windows 2000 and Internet Explorer 5.0. In addition, the Windows CE platform has supported Uniscribe since version 5.0.

Contents

"USP" is an initialism for Unicode Scripts Processor. Its features include:

Although Uniscribe continues to be maintained as of 2021, its intended replacement DirectWrite, which has more features, was introduced with Windows 7. [1]

USP10.DLL Versions

Below are listed some common versions of usp10.dll, as well as the methods by which they are distributed.

Features are added according only the "major.minor" part of the version number, the third part in the full version number is used for system target identification numbers for which the DLL was ported by Microsoft, and the last part is the build number on each target system version (which may change within regular system/software updates). Some hotfixes provide upgrades only for specific applications (notably in the Office installation directory), and are not suitable for use in the Windows system directory (whose version of the DLL should never be updated and is often protected by the system):

File sizes may vary depending on specific localizations of the DLL (depending on the target system or application for which it was compiled); those given here are for the US-English localization.

Versions of USP10.DLL for the US-English localized platforms
Version numberFile SizeFile DateSoftware Bundled byNew feature of this version
10.0.14393.079,360 bytes (x64)2016-08-02 Windows 10 Anniversary Update?
1.626.7601.23259627,712 bytes (x86)2015-11-03??
1.626.7601.19054627,712 bytes (x86)2015-11-03??
10.0.10240.16834626,688 bytes (x64)2015-07-10 Windows 10 Universal Shaping Engine support for Unicode 7.0 complex scripts [2] [3] [4]
1.626.7601.18454 (Windows 7 GDR)626,688 bytes (x86)
801,280 bytes (x64)
2014-04-25KB2957509   Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows Server 2003 Security update
1.626.7601.22666 (Windows 7 LDR)626,688 bytes (x86)
801,792 bytes (x64)
6.3.9431.076,288 bytes2013-06-16 Windows 8.1 (preview) ?
6.2.9200.1638474 KiB
2012-07-26 Windows 8  ?
1.626.7601.22171626,688 bytes (x86)2012-11-22 ? ?
1.626.7601.18009612 KiB
2012-11-22KB2786400 An update is available that changes the default settings of the shaping behavior for Arabic text rendering in Windows 7 and Windows Server 2008 R2.
1.626.7601.17514781 KiB
2010-11-20 Windows 7 SP1 x64 (RTM) ?
611 KiB
Windows 7 SP1 x86 (RTM)
1.626.7601.17105611 KiB
2010-09-30 Windows 7 SP1 (RC)Restore support for unassigned code points [5]
1.626.7600.20796625 KiB
2010-09-21 PowerPoint Viewer 2010 (SP1) KB2460050  ?
1.626.7600.20602623 KiB
2010-01-07 Microsoft Office 2010 (RTM)Support PR-37: Clarification of the Use of Zero Width Joiner in Indic Scripts; [6] This version supports OpenType on Windows XP.
1.626.7600.16385628 KiB
2009-08-04 Microsoft Office 2010 (Beta) ?
612 KiB
2009-07-14 Windows 7 (RTM) ?
1.626.7100.0612 KiB
2009-04-22 Windows 7 RC ?
1.626.6002.22402491 KiB
2010-07-11 Microsoft Office 2007 (SP2) Security Update KB2288621 MS10-063: Description of the security update for the 2007 Office suites: September 14, 2010
1.626.6002.18244607 KiB
2010-04-16 Windows Server 2008 SP2, Windows Vista SP2 Security Update KB981322 MS10-063: Description of the security update for Windows Unicode Scripts Processor: September 14, 2010
1.626.6002.18005607 KiB
2009-04-11 Windows Server 2008 SP2, Windows Vista SP2  ?
1.626.6001.18000490 KiB
2008-01-19 Windows Server 2008 (RTM), Windows Vista SP1, VOLTSupplementalFiles (July 2008), MS VOLT 1.3 (released July 31, 2008), SIL FieldWorks, Keyman Desktop 7.1Supports newer OpenType table features; improved support for ligatures and contextual shapes in Indic scripts with simpler fonts
1.626.6001.16510491 KiB
2007-04-18 Windows Server "Longhorn" (Beta 3) ?
1.626.6000.20581491 KiB
(502,784 bytes)
2007-04-19 02:15:55 UTC Windows Vista Hotfix KB936176 FIX: incorrect rendering of fully decomposed characters in NFD form encoded in sequences with more than 2 characters (affects 114 Latin characters decomposed in sequences of 3 codes)
1.626.6000.16386491 KiB
(502,784 bytes)
2006-11-02 09:44:03 UTC Windows Vista Ultimate (RTM)DirectX 10? WDDM?
1.626.5756.0491 KiB
2006-10-13 Microsoft Office 2007 Ultimate (RTM)Supports Oriya and Kannada scripts
1.615.5384.4484 KiB
2006-06-17 Windows Vista (Beta 2)DirectX 9?
1.614.5315.0454 KiB
2006-03-13 Microsoft Office 2007 (Beta 2)OpenType typographic features?
1.613.5291.0481 KiB
(492,544 bytes)
2006-01-04 Windows Vista (Beta 1)Microsoft VOLT 1.2
1.609.5219.0469 KiB
2005-08-17 Microsoft Office 12 Professional (Beta 1)OpenType typographic features?
1.606.5065.1 ?
 ?Third-party softwareSupports Mongolian script
1.606.5078.0 ?
 ?Hotfix for SIL fontsFIX : Combining mark sequences in Latin script may be incorrectly rendered
1.601.5022.8428 KiB
2005-01-07 Microsoft Sinhala Enabling Pack for XP 0.42 Supports Sinhala script
1.473.4067.15415 KiB
(424,960 bytes)
2004-10-22Third-party softwareMicrosoft Visual OpenType Layout Tool (VOLT) 1.1.225 update
1.473.4067.0415 KiB
(424,960 bytes)
2004-10-22Third-party softwareSupports Malayalam script; VOLTSupplementalFiles (Nov 2004); rendering improvement up to 3 diacritics with CGJ
1.471.4063.0415 KiB
(424,960 bytes)
2004-02-04 Microsoft Office 2003 (fix), SIL FieldWorks (Speech Tools Phonology Assistant 3.0.1) ?
1.471.4030.0404 KiB
(413,184 bytes)
2004-04-15 Microsoft Office 2003, Google Earth
1.468.4015.0 ? KiB
(? bytes)
 ?Paratext 6Supports Tibetan script.
1.468.4011.0 ? KiB
(? bytes)
 ? ?
1.460.3707.0 ? KiB
(? bytes)
 ?MS VOLT 1.1.206Supports Khmer script
1.453.3665.0 ? KiB
(? bytes)
 ?VOLTSupplementalFiles (Aug 2002) ?
1.422.3790.1830355 KiB
(364,032 bytes)
2005-03-30 Windows Server 2003 (SP1)FIX?
1.421.3790.0345 KiB
(353,280 bytes)
2003-03-25 Windows Server 2003 Support for DirectX, GDI+ and newer display driver model
1.420.2600.5969397 KiB
(406,016 bytes)
2010-04-16 Windows XP (SP3) Security Update KB981322 MS10-063: Description of the security update for Windows Unicode Scripts Processor: September 14, 2010
1.420.2600.5512397 KiB
(406,016 bytes)
2008-04-14 Windows XP Build 5512 (SP3)FIX?
1.420.2600.3163397 KiB
(406,016 bytes)
2007-06-26 Windows XP (SP2) Hotfix KB939450 FIX: The GetCharacterPlacement function unexpectedly returns zero
1.420.2600.2791397 KiB
(406,016 bytes)
2005-11-05 Windows XP (SP2) Hotfix KB910466 FIX: You may receive a "MEM_BAD_POINTER" error message on a computer that is running Windows XP with Service Pack 2
1.420.2600.2180397 KiB
(406,528 bytes)
2004-08-12 Windows XP Build 2180 (SP2)Supports Bengali and Malayalam scripts; supports complex Latin (for Vietnamese); FIX: ligation of tone contours
1.409.2600.1106331 KiB
(339,456 bytes)
2002-08-29 Windows XP Build 1106 (SP1) ?
1.408.2600.1020331 KiB
(339,456 bytes)
2002-04-17 Internet Explorer 6.0.2800.1106 (SP1) ?
1.407.2600.0331 KiB
(339,456 bytes)
2001-08-17 Windows XP Supports Thaana, Gujarati, Kannada, Gurmukhi (Punjabi), Syriac and Telugu scripts
1.405.2416.1317 KiB
(325,120 bytes)
2001-01-15 Microsoft Office XP (2002), Microsoft Word 2000 (SP1)Fully supports Hebrew, Devanagari and Tamil scripts
1.400.2411.1316 KiB
(323,072 bytes)
2000-12-13 Internet Explorer 6  ?
1.325.2195.6692308 KiB
(315,664 bytes)
2003-06-19 Windows 2000 SP4 (?) ?
1.325.2195.? ?
2001-09-25Microsoft Windows Installer 2.0 Redistributable for Windows 95/98/Me KB827763 Needed for Microsoft viewers (which otherwise require 98SE at least) of Powerpoint 2003 (and later) presentations on Windows 95 and 98
1.325.2195.1340308 KiB
(315,664 bytes)
2000-07-21 Windows 2000 SP1Fully supports Arabic script
1.325.2180.1316 KiB
(323,584 bytes)
2000-06-08 Windows Me Improved API for scripts with bidirectional and complex layouts; minimum support for Arabic and Hebrew scripts (no contextual letter forms, requires compatibility character mappings in fonts)
307 KiB
(315,152 bytes)
2000-04-26Microsoft Global IME for Microsoft Office XP
307 KiB
(315,152 bytes)
1999-11-30 Internet Explorer 5.5 release, SP1 & SP2
1.175.0.1268 KiB
(274,432 bytes)
1999-04-05 Windows 98 SEFirst stable Uniscribe API; supports simple alphabetic scripts with decomposed diacritics (Latin, Greek, Cyrillic)
258 KiB
(264,976 bytes)
1999-01-28 Internet Explorer 5.01
1.163.1890.1262 KiB
(268,288 bytes)
1998-09-22Third-party softwareMultilanguage Text Layout and Complex Scripts (MTLCS) snapshot (early release for developers)

Universal Shaping Engine

Scripts with complex text layout have contextual and non-linear requirements to render their typography correctly. These requirements include: ligatures, where two consecutive characters are combined into one shape (Latin, Devanagari); reordering, where some characters are written before the letter they follow in pronunciation (Bengali, Sinhala, and other Indic scripts); and context-shaping, where some letters have to change shape depending on whether they occur in the beginning, middle, or the end of the word (Arabic, Mongolian).

Uniscribe uses several script-specific shaping engines for handling typography in supported complex scripts; these are implemented in addition to a generic engine for non-complex scripts (such as Latin or Cyrillic). The currently used engines include [3] Indic (Bengali, Devanagari, Gujarati, Gurmukhi, Kannada, etc.), Arabic, Hangul, Hebrew, Khmer, Myanmar, and Thai/Lao variants.

The complexity of the Unicode standard and ambiguities in OpenType specification often result in incomplete or erroneous implementations of complex text layout. Script-specific shaping engines work on a case-by-case basis and do not consistently handle common features of OpenType fonts, which makes it difficult for OS programmers and font developers to support new scripts. Implementation errors are very hard or impossible to correct at a later stage without breaking up backward compatibility for existing documents and fonts, often requiring new OpenType layout features and a redesign of existing fonts and typography rendering engines. [3] [7] [8] [9]

In Windows 10, major refactoring work was done for Uniscribe to implement a generalized shaping model, the Universal Shaping Engine (USE). [10] This engine is directly based on glyph properties defined in the Unicode standard, in the hope that any complex script with a suitable font would be supported without the time and effort required to create a dedicated shaping engine. [4]

USE builds on a generalized "universal cluster model" developed for the Indic scripts, which models a superset of human writing systems. The engine classifies each character of a complex script into several categories, base classes and subclasses. For example, a provisional Indic classification includes general, syllabic and positional categories, further divided into base (number, consonant, tone letter, dependent vowel, etc.), base vowel (independent vowel), number (Brahmi joining number), final, medial, and modifier consonants, medial consonants, as well as top, bottom, left and right consonants and vowels. Unicode symbol strings are converted into collections of USE classes using well-defined rules, making glyph composition a standard procedure and allowing inter-character interactions not possible with current language features defined in OpenType specifications. [3]

The Universal Shaping Engine was presented at the OpenType Developer Meeting in 2014; a compatible approach was also implemented by the open source HarfBuzz text shaper. As of 2020, the USE in Windows 10 handles a total of 70 complex scripts: Adlam, Ahom, Balinese, Batak, Bhaiksuki, Brahmi, Buginese, Buhid, Chakma, Cham, Chorasmian, Dives Akuru, Duployan, Egyptian Hieroglyphs, Elymaic, Grantha, Gunjala Gondi, Hanifi Rohingya, Hanunoo, Javanese, Kaithi, Kayah Li, Kharoshthi, Khitan Small Script, Khojki, Khudawadi, Lepcha, Limbu, Mahajani, Makasar, Mandaic, Manichaean, Marchen, Masaram Gondi, Medefaidrin, Meitei Mayek, Miao, Modi, Mongolian, Multani, Nandinagari, Newa, N’Ko, Nyiakeng Puachue Hmong, Pahawh Hmong, Phags-pa, Psalter Pahlavi, Rejang, Saurashtra, Sharada, Siddham, Sinhala, Sogdian, Old Sogdian, Soyombo, Sundanese, Syloti Nagri, Tagalog, Tagbanwa, Tai Le, Tai Tham (limited support), Tai Viet, Takri, Tibetan, Tifinagh, Tirhuta, Wancho, Yezidi, and Zanabazar Square. [10]

Versions

Although Uniscribe has been available since Windows 2000, new versions of Uniscribe have provided more functions to the system, namely, support for other writing systems. An earlier update of it supports the display of Arabic and Hebrew, then Thai and Vietnamese. Since Windows XP, more South Asian and Assyrian scripts are supported.

See also

Related Research Articles

TrueType is an outline font standard developed by Apple in the late 1980s as a competitor to Adobe's Type 1 fonts used in PostScript. It has become the most common format for fonts on the classic Mac OS, macOS, and Microsoft Windows operating systems.

<span class="mw-page-title-main">Sinhala script</span> Abugida writing system

The Sinhala script, also known as Sinhalese script, is a writing system used by the Sinhalese people and most Sri Lankans in Sri Lanka and elsewhere to write the Sinhala language as well as the liturgical languages Pali and Sanskrit. The Sinhalese Akṣara Mālāva, one of the Brahmic scripts, is a descendant of the Ancient Indian Brahmi script. It is also related to the Grantha script.

<span class="mw-page-title-main">Brahmic scripts</span> Family of abugida writing systems

The Brahmic scripts, also known as Indic scripts, are a family of abugida writing systems. They are used throughout the Indian subcontinent, Southeast Asia and parts of East Asia. They are descended from the Brahmi script of ancient India and are used by various languages in several language families in South, East and Southeast Asia: Indo-Aryan, Dravidian, Tibeto-Burman, Mongolic, Austroasiatic, Austronesian, and Tai. They were also the source of the dictionary order (gojūon) of Japanese kana.

OpenType is a format for scalable computer fonts. Derived from TrueType, it retains TrueType's basic structure but adds many intricate data structures for describing typographic behavior. OpenType is a registered trademark of Microsoft Corporation.

<span class="mw-page-title-main">Pango</span> Library for text rendering

Pango is a text layout engine library which works with the HarfBuzz shaping engine for displaying multi-language text.

<span class="mw-page-title-main">Scribus</span> Desktop publishing application

Scribus is free and open-source desktop publishing (DTP) software available for most desktop operating systems. It is designed for layout, typesetting, and preparation of files for professional-quality image-setting equipment. Scribus can also create animated and interactive PDF presentations and forms. Example uses include writing newspapers, brochures, newsletters, posters, and books.

Arial Unicode MS is a TrueType font and the extended version of the font Arial. Compared to Arial, it includes higher line height, omits kerning pairs and adds enough glyphs to cover a large subset of Unicode 2.1—thus supporting most Microsoft code pages, but also requiring much more storage space. It also adds Ideographic layout tables, but unlike Arial, it mandates no smoothing in the 14–18 point range, and contains Roman (upright) glyphs only; there is no oblique (italic) version. Arial Unicode MS was previously distributed with Microsoft Office, but this ended in 2016 version. It is bundled with Mac OS X v10.5 and later. It may also be purchased separately from Ascender Corporation, who licenses the font from Microsoft.

<span class="mw-page-title-main">Telugu script</span> Writing system from the Brahmic family of scripts

Telugu script, an abugida from the Brahmic family of scripts, is used to write the Telugu language, a Dravidian language spoken in the Indian states of Andhra Pradesh and Telangana as well as several other neighbouring states. It is one of the official scripts of the Indian Republic. The Telugu script is also widely used for writing Sanskrit texts and to some extent the Gondi language. It gained prominence during the Eastern Chalukyas also known as Vengi Chalukya era. It shares extensive similarities with the Kannada script, as both of them evolved from the Bhattiprolu and Kadamba scripts of the Brahmi family. In 2008, the Telugu language was given the status of a Classical Language of India, in recognition of its rich history and heritage.

The International Alphabet of Sanskrit Transliteration (IAST) is a transliteration scheme that allows the lossless romanisation of Indic scripts as employed by Sanskrit and related Indic languages. It is based on a scheme that emerged during the 19th century from suggestions by Charles Trevelyan, William Jones, Monier Monier-Williams and other scholars, and formalised by the Transliteration Committee of the Geneva Oriental Congress, in September 1894. IAST makes it possible for the reader to read the Indic text unambiguously, exactly as if it were in the original Indic script. It is this faithfulness to the original scripts that accounts for its continuing popularity amongst scholars.

Apple Advanced Typography (AAT) is Apple Inc.'s computer technology for advanced font rendering, supporting internationalization and complex features for typographers, a successor to Apple's little-used QuickDraw GX font technology of the mid-1990s. It is a set of extensions to the TrueType outline font standard, with smartfont features similar to the OpenType font format that was developed by Adobe and Microsoft, and to Graphite. It also incorporates concepts from Adobe's "multiple master" font format, allowing for axes of traits to be defined and morphing of a glyph independently along each of these axes. AAT font features do not alter the underlying typed text; they only affect the characters' representation during glyph conversion.

<span class="mw-page-title-main">Complex text layout</span> Neighbour-dependent grapheme positioning

Complex text layout (CTL) or complex text rendering is the typesetting of writing systems in which the shape or positioning of a grapheme depends on its relation to other graphemes. The term is used in the field of software internationalization, where each grapheme is a character.

Windows Presentation Foundation (WPF) is a free and open-source graphical subsystem originally developed by Microsoft for rendering user interfaces in Windows-based applications. WPF, previously known as "Avalon", was initially released as part of .NET Framework 3.0 in 2006. WPF uses DirectX and attempts to provide a consistent programming model for building applications. It separates the user interface from business logic, and resembles similar XML-oriented object models, such as those implemented in XUL and SVG.

<span class="mw-page-title-main">Zero-width joiner</span> Non-printing character used in computerized typesetting

The zero-width joiner (&#8205;) is a non-printing character used in the computerized typesetting of writing systems in which the shape or positioning of a grapheme depends on its relation to other graphemes, such as the Arabic script or any Indic script. Sometimes the Roman script is to be counted as complex, e.g. when using a Fraktur typeface. When placed between two characters that would otherwise not be connected, a ZWJ causes them to be printed in their connected forms.

A Unicode font is a computer font that maps glyphs to code points defined in the Unicode Standard. The vast majority of modern computer fonts use Unicode mappings, even those fonts which only include glyphs for a single writing system, or even only support the basic Latin alphabet. Fonts which support a wide range of Unicode scripts and Unicode symbols are sometimes referred to as "pan-Unicode fonts", although as the maximum number of glyphs that can be defined in a TrueType font is restricted to 65,535, it is not possible for a single font to provide individual glyphs for all defined Unicode characters. This article lists some widely used Unicode fonts that support a comparatively large number and broad range of Unicode characters.

Apple's Macintosh computer supports a wide variety of fonts. This support was one of the features that initially distinguished it from other systems.

<span class="mw-page-title-main">Panorama (typesetting software)</span>

Panorama is a line layout and text composition engine to render text in various worldwide languages made by Bitstream Inc. Panorama uses Font Fusion as the base to support rendering of the text. The engine allows the user to manage different text formatting aspects like spacing, alignment, style effects.

HarfBuzz is a software development library for text shaping, which is the process of converting Unicode text to glyph indices and positions. The newer version, New HarfBuzz (2012–), targets various font technologies while the first version, Old HarfBuzz (2006–2012), targeted only OpenType fonts.

DirectWrite is a text layout and glyph rendering API by Microsoft. It was designed to replace GDI/GDI+ and Uniscribe for screen-oriented rendering and was first shipped with Windows 7 and Windows Server 2008 R2, as well as Windows Vista and Windows Server 2008. DirectWrite is hardware-accelerated when running on top of Direct2D, but can also use the CPU to render on any target, including a GDI bitmap.

Clip fonts or split fonts are non-Unicode fonts that assign glyphs of Brahmic scripts, such as Devanagari, at code positions intended for glyphs of the Latin script or to produce glyphs not found in Unicode by using its Private Use Area (PUA).

Tamil All Character Encoding (TACE16) is a scheme for encoding the Tamil script in the Private Use Area of Unicode, implementing a syllabary-based character model differing from the modified-ISCII model used by Unicode's existing Tamil implementation.

References

  1. "Windows 7: Introducing Direct2D and DirectWrite". Channel 9. PDC2008. Microsoft Corp. 2008-10-29. Retrieved 2021-06-01.
  2. "Script and Font Support in Windows". Archived from the original on 2014-12-25.
  3. 1 2 3 4 John Hudson (10 May 2016). "Making fonts for the Universal Shaping Engine" (PDF). Tiro Typeworks. Retrieved 2020-06-09.
  4. 1 2 Blog, Windows Experience; Glass, Andrew (February 23, 2015). "Windows shapes the world's languages". Windows Experience Blog.
  5. "RE: Symbola font (was: James Kass and Code2000 font)" . Retrieved 2011-01-29.
  6. Public Review Issue #37, Proposal on Clarification and Consolidation of the Function of ZERO WIDTH JOINER in Indic Scripts, Unicode Consortium
  7. "Problems for Indic typography in current OpenType Layout implementations - John Hudson" (PDF).
  8. "Fixing Indic2 OpenType Layout - John Hudson" (PDF).
  9. "Beyond shaping and towards a general model of OpenType typography - John Hudson" (PDF).
  10. 1 2 "Creating and supporting OpenType fonts for the Universal Shaping Engine - Typography". 30 September 2022.
Notes