The multilingual nature of the Internet can cause a wide variety of problems for developers of Internet-related applications. Among these difficulties are detecting the character encoding that Web pages and e-mails use, converting text from one encoding to another as part of an import or export operation, and displaying characters that are not included within the font specified for parts of a page.
MLang (MLang.dll) is a Component Object Model (COM) component that provides a variety of services intended to help solve these problems. Because MLang services are geared toward Internet-related applications, MLang includes application programming interfaces (APIs) to enumerate supported code pages and locales, and to retrieve locale and character-set information.
MLang.dll also includes a rich set of character-set conversion APIs, the most important of which translates Internet character sets to Unicode and back. This is one of the technologies that allows you to base your applications entirely on Unicode and frees you from dependencies on particular Internet character sets.
MLang also provides two code-page detection methods that automatically determine the languages and code pages in which data is written. With MLang you can detect which code pages contain a given character or string.
In addition, MLang gives information about the charset and font support for specific scripts available on the computer that is running the software. This script and font information can be used for implementing font linking, which is a general way to combine several fonts for handling multiple scripts. Through font linking, you can create custom fonts to display characters from a variety of character sets at once.
MLang services supplement the Microsoft Win32 National Language Support (NLS) API by providing additional functionality not offered by NLS. (For more information on NLS, see Chapter 4, "Locale and Cultural Awareness." ) In particular, MLang extends the set of character encodings supported natively by Microsoft Windows operating systems.