International features associated with TSF include its capacity for keeping current with new input methods that are currently gaining prominence in the marketplace. TSF also provides an efficient means of input for those who work with East Asian languages. Additionally, TSF eliminates the need for device-specific or language-specific APIs, which is a significant advantage as you enable your application to handle multilingual text input and natural-language technologies.
For desktop and laptop scenarios, as well as for most languages and scripts, a standard keyboard and mouse have been relatively efficient means of interacting with the PC. As hardware has advanced in power and dimension, however, new keyboard-less and mobile devices have emerged that require new methods of input, such as speech and handwriting recognition. (For more information, see Chapter 5, "Text Input, Output, and Display.") The original Microsoft Win32 API, designed almost exclusively to take text input from the keyboard, is inadequate for these input technologies.
For typists working in languages that do not use Western scripts such as Chinese, Japanese, or Korean, a special keyboard processor known as an "Input Method Editor" (IME) is required. These IMEs are often powerful programs that utilize huge databases of information with complex algorithms that try to guess the result the user intends. (For more information, see Chapter 5.) Despite years of research, however, most IMEs today are not very easy to use. The IMEs typically require that the user type a few keys to limit the subset of candidates and then to choose from a list of those candidates before sending the result to the application. The process forces the user to switch back and forth between performing the main task (mail composition, note taking, document creation) and managing input via the UI of the IME.
Furthermore, the modal, one-directional nature of the input APIs of the past has often meant that a single typo could require the user to retype an entire phrase (sometimes with a penalty of 20 or more keystrokes). Thus East Asian users have long labored with average input rates of 13 to 18 words per minute-less than half that of their Western European counterparts. In addition to a better system for keyboard input, for these users especially, handwriting and speech have the potential to improve input efficiency significantly.
Enabling applications for multilingual text input and natural-language technologies on Windows has in the past meant implementing multiple, complicated, device- and language-specific APIs. Each of these APIs required a significant investment of time and energy to understand the technology, to implement support for the API, and to perform debugging. Some of these APIs also required different implementations from one language to another (such as English versus Japanese versus Korean), and many were device-dependent. Quite a few of these technologies were not completely compatible either, leaving the developer to sort out the coordination of the services and their associated UI.
TSF is designed to provide a general system framework for natural-language and input technologies; this framework factors device- and technology-specific code and behavior out to service providers. With TSF, an application implements a single ITextStore interface for access to a wide range of pluggable text services. For the most part, TSF applications do not need to be aware of or have code written for specific text services. Nor do applications need to be written for specific languages, since TSF is itself fully globalized. Once again, all text input via TSF is Unicode, and it is expected that text services will tag text with input-language IDs.