Script and Font Support in Windows

Sorting it all Out
Michael Kaplan's random stuff of dubious value
Be sure to read the disclaimer here first!

Script and Font Support in Windows

  • Comments 5

This is some info that Peter Constable put together which I am re-posting with permission... good stuff! :-)

Script and Font Support In Windows

Since before Windows 2000, new script support has been added in each major release of Windows. The following describes changes made in each major release.

Note that support for a script may require certain changes to text stack components as well as changes to fonts. Windows has many different text stack components: GDI, Uniscribe, GDI+, WPF, RichEdit, ComCtl32… The information provided here pertains to GDI and Uniscribe.

Comments on language usage are included in cases in which associations between scripts and languages may not be well known. The list of languages for any given script is not necessarily exhaustive.

 

Windows 2000

This was the first version of Windows that included the Uniscribe component (usp10.dll). Functional benefits included: 
  • Shaping support for complex scripts such as Arabic and Thai were brought together in a single library, allowing all language version of Windows to be built from a single source and to display text in any supported script. (Previously, enablement support for particular languages was added to localized versions.)
  • Some new complex scripts were supported.
  • Font fallback for different scripts was provided. (This is done in Uniscribe ScriptString* APIs that are typically used in UI components.)

Support for basic Latin, Greek and Cyrillic (without combining marks) existed with W APIs in Windows NT 4 and Windows ME. In relation to complex scripts, support for Arabic, Hebrew and Thai existed in previous versions and was consolidated in Windows 2000 in the Uniscribe component. The following are new scripts supported in Windows 2000 and associated fonts:

New scripts

Region where script is from
Fonts
Comments on language usage
Armenian Eurasia
Sylfaen
Devanagari South Asia Mangal Used for many langauges including Hindi, Marathi, Sanskrit.
Georgian Eurasia Sylfaen
Tamil South Asia Latha

 

Windows XP

New scripts supported and associated fonts:

New scripts
Region where script is from
Fonts
Comments on language usage
Gujarati South Asia Shruti
Gurmukhi South Asia Raavi Used in India for the Punjabi language.
Kannada South Asia Tunga
Syriac Middle East Estrangelo Edessa
Telugu South Asia Gautami
Thaana
South Asia
MV Boli
Used for the Divehi language.

A surrogates shaping engine was also added to Uniscribe to allow display of Unicode supplementary-plane characters in the GDI text stack. (GDI supports wide characters, but does not understand UTF-16 surrogate pairs.) Also, Uniscribe's font fallback mechanism was extended to support fallback for Unicode supplementary planes: for each plane from 1 to 16, a single fallback font can be specified in the registry.

The changes in Uniscribe to support supplementary-plane characters allow Windows XP to support CJK Extension B characters.

 

Windows XP SP2

New scripts supported and associated fonts:

New scripts
Region where script is from Fonts Comments on language usage
Bengali South Asia Vrinda Used for the Assamese language as well as Bengali.
Malayalam South Asia Kartika

 

Windows Vista

New scripts supported and associated fonts:

New scripts
Region where script is from
Fonts
Comments on language usage
Canadian Syllabics North America Euphemia Used for several languages including Inuktitut and Cree.
Cherokee North America Plantagenet
Ethiopic Africa Nyala Used for Amharic and other languages.
Khmer Southeast Asia

DaunPenh
MoolBoran

Lao Southeast Asia DokChampa
Mongolian
North Asia
Mongolian Baiti
Oriya South Asia Kalinga
Sinhala South Asia Iskoola Pota
Tibetan Central Asia Microsoft Himalaya
Yi China Microsoft Yi Baiti

Character coverage for several already-supported scripts was extended to Unicode 4.1 or 5.0. Several fonts were updated accordingly. In particular, support for Latin, Greek, Cyrillic, Hebrew and Arabic was extended in the following fonts:

  • Arial
  • Courier New
  • Microsoft Sans Serif
  • Tahoma
  • Times New Roman

The new Aero-theme UI font, Segoe UI, also provides Unicode 5.0 support for Latin, Greek, Cyrillic and Arabic.

Extension B fonts for the SimSun and MingLiU families were added, as well as a variation of MingLiU with HKSCS support.

The Uighur language uses Arabic script, which was already supported. However, a different font is required for Uighur typography. The Microsoft Uighur font was added to support this.

Uniscribe's font fallback mechanism for Unicode supplementary planes was enhanced to support different fallback fonts depending on the starting font. In this way, fallback for CJK Extension B characters uses appropriate fonts for the given language. For example, for UI displayed using the SimSun font (Simplified Chinese), the fallback font for Extension B is SimSun-ExtB.

New APIs were added to Uniscribe to support OpenType advanced typographic functionality in non-complex scripts. This provides a way for clients to expose advanced font capabilities such as language-specific glyphs; discretionary ligatures; true typographic small caps, superscripts and subscripts; old-style as well as tabular digits.

Windows Vista includes the Cambria Math font, which has additional tables used to support layout of mathematical formulas. Special software support is also required to render math formulas, however. This is provided in Office 2007, but not in Windows Vista text-stack components.

Of course the obvious question is what's coming next, but it is a bit early for that at the moment.

We should spend at least a little time revelling in what we have, right? :-)

 

This post brought to you by(U+0f02, a.k.a. TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA)

Comment on the blather
Leave a Comment
  • Please add 5 and 4 and type the answer here:
  • Post
Blog - Comment List
  • Great summary, nice to have it all in one place (forward thanks to Peter :-)

    But "of course the obvious question is": where can we see samples of the "new APIs ... added to Uniscribe to support OpenType advanced typographic functionality in non-complex scripts."

    See, it was not that obvious :-)

  • I think I just lost some comments. Grrrr.

    Tom, if you wanted to re-post your comment I'll do my best to make sure I do not over-prune spam again....

  • Re Mihai's question: The following Uniscribe APIs were added in Vista to support OpenType functionality:

    • ScriptGetFontAlternateGlyphs()
    • ScriptGetFontFeatureTags()
    • ScriptGetFontLanguageTags()
    • ScriptGetFontScriptTags()
    • ScriptItemizeOpenType()
    • ScriptPlaceOpenType()
    • ScriptPositionSingleGlyph()
    • ScriptShapeOpenType()
    • ScriptSubstituteSingleGlyph()
  • I have no experience of Microsoft Office 2008 for Mac. But no other Mac software, including Apple's own iWork, can properly handle (compose words from) the excellent Unicode fonts of Indian scripts freely downloadable from ildc.gov.in. On the other hand, even the FREE Windows program Open Office can do this.

  • Should not be that early now, any summary of what has come next? :-)

Page 1 of 1 (5 items)