第二,Unicode的TextOutW函式显示的字元依据16位元字元代码,而不是非Unicode的TextOutA函式的8位元字元代码。因为这些16位元字元代码含义明确,GDI可以确定目前在装置内容中选择的字体是否可显示每个字元。
在美国英语版Windows NT下执行Unicode版的KEYVIEW1多少让人感到有些迷惑,因为它所显示的就好像GDI只显示了0x0000到0x00FF之间的字元代码,而没有显示高於0x00FF的代码。也就是说,只是在字元代码和系统字体中256个字元之间简单的一对一映射。
然而,如果安装了希腊或者俄语版的Windows NT,您将发现情况就大不一样了。例如,如果安装了希腊版的Windows NT,则美国英语、德语、希腊语和俄语键盘将会产生与美国英语版Windows NT同样的Unicode字元代码。不过,希腊版的Windows NT将不显示德语重音字元或者俄语字元,因为这些字元并不在希腊系统字体中。同样,俄语版的Windows NT也不显示德语重音字元或者希腊字元,因为这些字元也不在俄语系统字体中。
其中,Unicode版的KEYVIEW1的区别在日语版Windows NT下更具戏剧性。您从IME输入日文字元,这些字元可以正确显示。唯一的问题是格式:因为日文字元通常看起来非常复杂,它们的显示宽度是其他字元的两倍。
TrueType和大字体
我们使用的点阵字体(在日文版Windows中带有附加字体)最多包括256个字元。这是我们所希望的,因为当假定字元代码是8位元时,点阵字体档案的格式就跟早期Windows时代的样子一样了。这就是为什么当我们使用SYSTEM_FONT或者SYSTEM_FIXED_FONT时,某些语言中一些字元总不能正确显示(日本系统字体有点不同,因为它是双位元组字元集;大多数字元实际上保存在TrueType集合档案中,档案副档名是.TTC)。
TrueType字体包含的字元可以多於256个。并不是所有TrueType字体中的字元都多於256个,但Windows 98和Windows NT中的字体包含多於256个字元。或者,安装了多语系支援