Making sure that your application can properly handle text input, output, and display is a challenging job if you don't use Windows system-supported APIs. You'll need to enable your application to deal with different input languages and methods, including different keyboard layouts and IMEs, as well as new input services such as voice-recognition engines or handwriting-recognition engines. You will also need to make sure your application properly displays all supported scripts, in accordance with the linguistic characteristics associated with them. These scripts include complex scripts that require special handling in terms of layout and character shaping. Additionally, you will need to understand the different options available for displaying multilingual text-including such things as vertical text-by leveraging system support. Finally, you should be able to handle fonts in a multilingual context.
Considerable effort has been made to provide various system services for applications. By creating your own solution, you risk having an application that is incompatible with the rest of the operating system. Some of the support that Windows 2000 and Windows XP offer include the IME module, whereby a user can enter ideographic characters or phonetic syllables with various methods of input. Windows 2000 and Windows XP also offer support for complex scripts, enabling you to deal with linguistic traits associated with these scripts, such as bidirectionality, character reordering, contextual shaping, combining characters, and special rules in terms of word breaking, line breaking, and text justification.
To effectively display text in a multilingual context for Win32 applications, you can call Win32 text APIs, instantiate Win32 edit controls, instantiate rich edit controls, or call Uniscribe. Through these four options, Windows 2000 and Windows XP provide support for displaying complex scripts and multilingual Unicode text.
To display the correct font, there are, once again, numerous types of system support available. This support for fonts, which includes OpenType fonts, font fallback, and font linking, can help you as you work with fonts in Win32 applications and Web content. For Win32 applications, do not hard-code the font size you use, and do not hard-code the font name in your code, since doing so could break your UI. To effectively display fonts in Web content, avoid placing font attribute values into inline styles. Instead, use CSS in which font attributes and style are defined in private styles. By following the best practices and leveraging the system support discussed in this chapter, you can surmount many of the obstacles that multilingual computing often presents.