
Uniscribe Supporting multilanguage text layout and complex scripts with Windows 2000 By F. Avery Bishop, David C. Brown, David M. This article is provided for historic reference purposes. A multilanguage version of Windows NT 5.0 will allow per-user setting of the user-interface language. This article assumes you’re familiar with International Windows. Introduction All international versions of Windows 2000, from Japanese to Hebrew, are based on the same binary files. For developers of global applications, the shift to a single worldwide binary strategy is welcome news; different localized versions of an application can now be developed under a single Windows 2000-based system. In this article, we'll explore techniques for developing applications that handle multilingual text and complex scripts. Multilingual Features in Windows 2000 All language versions of Windows 2000 will be enabled for all supported languages, including European, and Far Eastern. Characteristics of Complex Scripts Figure 1.
Desktop Publishing Lessons--by Tonya Skinner Lesson Plans/Activities Water Slidz DTP Simulation (6 activities w/grade sheet) Water Slidz Photoshop Bag O' Tricks Workshop DOC Photoshop "Phun" Workshop PDF ZIP for files available at dropboks.com (email me for the download password--tonya@btskinner.com) Photoshop Clone Yourself Project DOCx (new Word 07 format; save as .DOCX if you have problems) Photoshop Typography Name Project DOCx (new Word 07 format; save as .DOCX if you have problems) Photoshop Crystal Ball Project DOCx (new Word 07 format; save as .DOCX if you have problems) Photoshop Color Me Crazy Project DOC Sample Photoshop Create Your Own Baby Announcement Project DOC Sample Photoshop iMe Project (iPod-like silhouettes) DOC Photoshop Movie Poster Project DOC Sample Variation (more advanced) DOC Photoshop Zombify Project DOC Sample Cruise DTP Simulation (6-9 activities; designed for InDesign, but can be done in just about anything w/grade sheet) Cruise.doc Photoshop Elements Projects pse-projects Other Resources
Integrating UspLib It's finally here! - a new and improved Neatpad which demonstrates the rendering capabilities of UspLib. The purpose of this is tutorial to document the UspLib API, and secondly to mention a few details about how UspLib was integrated into Neatpad's code. I very much hope that the design of UspLib is good enough that it will others to import it into their own editors and get instant styled-text support! The image above shows Neatpad's new Unicode text-rendering engine in action. Now, don't get too exited about this latest version. The UspLib API has been documented below. To use UspLib, include the single header-file usplib.h, and link against usplib.lib. UspAllocate UspAllocate initializes and returns a new USPDATA object, which must be used for all subsequent UspLib operations. UspAnalyze UspAnalyze takes as input a single USPDATA object and analyses the the specified paragraph of UTF-16 text, saving the results back in uspData. UspInitFont The USPFONT structure is defined below: UspTextOut
Uniscribe: The Missing Documentation & Examples Introduction Microsoft created an extremely powerful API called Uniscribe that allows applications to do typography of scripts that may have complex rules for transforming the input string (a list of Unicode code points) to the proper thing that should be rendered on the screen. Unfortunately, Microsoft did not document this library very well, gave no examples, and blessed it with an extremely complex API. This document comes from my contribution to getting Uniscribe to work in Google Chrome. Note: In the examples, I use Unicode characters rather than images, and count on your browser to be able to display complex scripts properly. Why should you use Uniscribe? You want to be able to render right-to-left and left-to-right languages in the same layout. Overview Uniscribe works in two modes. This basic mode is not discussed here. Instead, I document the parts of the more complex do-it-yourself API that I am familiar with. Call ScriptItemize on your input string. Disclaimer ScriptItemize psa