Uniscribe

Uniscribe is the Microsoft Windows set of services for rendering Unicode-encoded text, especially complex text layout. They are implemented in the DLL USP10.DLL. USP10.dll became available to the public with Windows 2000 and Internet Explorer 5.0. In addition, the Windows CE platform has supported Uniscribe since version 5.0.

Although Uniscribe continues to be maintained, with Windows 7 its intended replacement DirectWrite was introduced, which has more features.

USP10.dll

USP is an initialism for Unicode Scripts Processor. The main purpose of Uniscribe includes the following:

  1. arranging input text from the input sequence to visual sequence.
  2. substituting glyphs according to context (e.g. different forms of Arabic characters)
  3. ordering displayed text based on text flow direction (e.g. LTR vs RTL, Horizontal vs Vertical).

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 not suited 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.

Version numberFile SizeFile DateSoftware Bundled byNew feature of this version
10.0.14393.0 79,360 bytes (x64) 2016-08-02 Windows 10 Anniversary Update ?
1.626.7601.23259 627,712 bytes (x86) 2015-11-03 ? ?
1.626.7601.19054 627,712 bytes (x86) 2015-11-03 ? ?
10.0.10240.16834 626,688 bytes (x64) 2015-07-10 Windows 10 Universal Shaping Engine support for Unicode 7.0 complex scripts[1][2][3]
1.626.7601.18454 (Windows 7 GDR) 626,688 bytes (x86)
801,280 bytes (x64)
2014-04-25 KB2957509   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-16Windows 8.1 (preview) ?
6.2.9200.1638474 KiB
2012-07-26Windows 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-20Windows 7 SP1 x64 (RTM) ?
611 KiB
Windows 7 SP1 x86 (RTM)
1.626.7601.17105611 KiB
2010-09-30Windows 7 SP1 (RC) Restore support for unassigned code points[4]
1.626.7600.20796625 KiB
2010-09-21PowerPoint Viewer 2010 (SP1) KB2460050 ?
1.626.7600.20602623 KiB
2010-01-07Microsoft Office 2010 (RTM) Support PR-37: Clarification of the Use of Zero Width Joiner in Indic Scripts;[5] This version supports OpenType on Windows XP.
1.626.7600.16385628 KiB
2009-08-04Microsoft Office 2010 (Beta) ?
612 KiB
2009-07-14Windows 7 (RTM) ?
1.626.7100.0612 KiB
2009-04-22Windows 7 RC ?
1.626.6002.22402491 KiB
2010-07-11Microsoft 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-16Windows 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-11Windows Server 2008 SP2, Windows Vista SP2 ?
1.626.6001.18000490 KiB
2008-01-19Windows Server 2008 (RTM), Windows Vista SP1, VOLTSupplementalFiles (July 2008), MS VOLT 1.3 (released July 31, 2008), SIL FieldWorks, Keyman Desktop 7.1 Supports newer OpenType table features; improved support for ligatures and contextual shapes in Indic scripts with simpler fonts
1.626.6001.16510491 KiB
2007-04-18Windows Server "Longhorn" (Beta 3) ?
1.626.6000.20581491 KiB
(502,784 bytes)
2007-04-19 02:15:55 UTCWindows 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 UTCWindows Vista Ultimate (RTM) DirectX 10? WDDM?
1.626.5756.0491 KiB
2006-10-13Microsoft Office 2007 Ultimate (RTM) Supports Oriya and Kannada scripts
1.615.5384.4484 KiB
2006-06-17Windows Vista (Beta 2) DirectX 9?
1.614.5315.0454 KiB
2006-03-13Microsoft Office 2007 (Beta 2) OpenType typographic features?
1.613.5291.0481 KiB
(492,544 bytes)
2006-01-04Windows Vista (Beta 1) Microsoft VOLT 1.2
1.609.5219.0469 KiB
2005-08-17Microsoft Office 12 Professional (Beta 1) OpenType typographic features?
1.606.5065.1?
?Third-party software Supports Mongolian script
1.606.5078.0?
?Hotfix for SIL fonts FIX : Combining mark sequences in Latin script may be incorrectly rendered
1.601.5022.8428 KiB
2005-01-07Microsoft Sinhala Enabling Pack for XP 0.42 Supports Sinhala script
1.473.4067.15415 KiB
(424,960 bytes)
2004-10-22Third-party software Microsoft Visual OpenType Layout Tool (VOLT) 1.1.225 update
1.473.4067.0415 KiB
(424,960 bytes)
2004-10-22Third-party software Supports Malayalam script; VOLTSupplementalFiles (Nov 2004); rendering improvement up to 3 diacritics with CGJ
1.471.4063.0415 KiB
(424,960 bytes)
2004-02-04Microsoft Office 2003 (fix), SIL FieldWorks (Speech Tools Phonology Assistant 3.0.1) ?
1.471.4030.0404 KiB
(413,184 bytes)
2004-04-15Microsoft Office 2003, Google Earth
1.468.4015.0? KiB
(? bytes)
?Paratext 6 Supports Tibetan script.
1.468.4011.0? KiB
(? bytes)
??
1.460.3707.0? KiB
(? bytes)
?MS VOLT 1.1.206 Supports Khmer script
1.453.3665.0? KiB
(? bytes)
?VOLTSupplementalFiles (Aug 2002) ?
1.422.3790.1830355 KiB
(364,032 bytes)
2005-03-30Windows Server 2003 (SP1) FIX?
1.421.3790.0345 KiB
(353,280 bytes)
2003-03-25Windows Server 2003 Support for DirectX, GDI+ and newer display driver model
1.420.2600.5969397 KiB
(406,016 bytes)
2010-04-16Windows 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-14Windows XP Build 5512 (SP3) FIX?
1.420.2600.3163397 KiB
(406,016 bytes)
2007-06-26Windows XP (SP2) Hotfix KB939450 FIX: The GetCharacterPlacement function unexpectedly returns zero
1.420.2600.2791397 KiB
(406,016 bytes)
2005-11-05Windows 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-12Windows 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-29Windows XP Build 1106 (SP1) ?
1.408.2600.1020331 KiB
(339,456 bytes)
2002-04-17Internet Explorer 6.0.2800.1106 (SP1) ?
1.407.2600.0331 KiB
(339,456 bytes)
2001-08-17Windows XP Supports Thaana, Gujarati, Kannada, Gurmukhi (Punjabi), Syriac and Telugu scripts
1.405.2416.1317 KiB
(325,120 bytes)
2001-01-15Microsoft Office XP (2002), Microsoft Word 2000 (SP1) Fully supports Hebrew, Devanagari and Tamil scripts
1.400.2411.1316 KiB
(323,072 bytes)
2000-12-13Internet Explorer 6 ?
1.325.2195.6692308 KiB
(315,664 bytes)
2003-06-19Windows 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-21Windows 2000 SP1 Fully supports Arabic script
1.325.2180.1316 KiB
(323,584 bytes)
2000-06-08Windows 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-30Internet Explorer 5.5 release, SP1 & SP2
1.175.0.1268 KiB
(274,432 bytes)
1999-04-05Windows 98 SE First stable Uniscribe API; supports simple alphabetic scripts with decomposed diacritics (Latin, Greek, Cyrillic)
258 KiB
(264,976 bytes)
1999-01-28Internet Explorer 5.01
1.163.1890.1262 KiB
(268,288 bytes)
1998-09-22Third-party software Multilanguage 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 correctly render their typography. These requirements include: ligatures, where two consecutive characters have to be combined into one shape (Latin, Devanagari); reordering, where some characters have to be displayed before the letter they follow in actual pronunciation (Bengali, Sinhala, and other Indic languages); and context-shaping, as in cursive scripts 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 Cyrillic, Greek, Latin, etc.). The currently used engines include[2] Indic (Bengali, Devanagari, Gujurati, 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.[2][6][7][8]

In Windows 10, a major refactoring work was done to implement a generalized shaping model, the Universal Shaping Engine (USE). 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.[3]

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 them 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 collection 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.[2]

The Universal Shaping Engine was presented at the OpenType Developer Meeting in 2014; a compatible approach has also been implemented by the open source HarfBuzz text shaper. In Windows 10, the USE handles a total of 45 complex scripts: Balinese, Batak, Brahmi, Buginese, Buhid, Chakma, Cham, Duployan, Egyptian Hieroglyphs, Grantha, Hanunoo, Javanese, Kaithi, Kayah Li, Kharoshthi, Khojki, Khudawadi, Lepcha, Limbu, Mahajani, Mandaic, Manichaean, Meitei Mayek, Modi, Mongolian, N’Ko, Pahawh Hmong, Phags-pa, Psalter Pahlavi, Rejang, Saurashtra, Sharada, Siddham, Sinhala, Sundanese, Syloti Nagri, Tagalog, Tagbanwa, Tai Le, Tai Tham (extremely imperfectly), Tai Viet, Takri, Tibetan, Tifinagh and Tirhuta.

Versions

Although Uniscribe has been available since Windows 2000, new versions of Uniscribe 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 alphabets are supported.

gollark: That's not actually guaranteed either.
gollark: Actually, you can, but only in bizarrely specific ways.
gollark: Well, consciousness/abstract reasoning/etc.
gollark: "You" are some specific brain modules which handle consciousness and language and whatever; it's hardly guaranteed that you have write access to everything else.
gollark: That... doesn't really make sense?

See also

References

Notes
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.