Windows Embedded CE提供了链接字库的能力,它可以将一个或多个字库链接到另一个字库上,前者称为被链接字库,后者称为基本字库。一旦你链接了字库,你就可以使用被链接的字库显示在基本字库中不存在的码字。比如,将日文字库链接到拉丁字库,你就可以在使用拉丁字库的UNICODE文本API中显示日文字符。
如果你的设备上启用了字库链接,你可以通过检查注册表的子键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink来确定被链接的字库到基本字库的映射关系,下面的代码示例了如何在注册表中添加一个链接:
<base font name> = <path and file of linked font>, <name of linked font>
使用字库链接时,你可以规定一个或多个UNICODE字符必须从被链接字体中取,即使这些字符也存在于基本字库中。要指定被从基本字库中忽略的字符,你可以使用HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SkipTable注册表键,此键在操作系统启动时是只读的。
在下面的示例代码中,某字符的UNICODE编码为005c,虽然Tahoma字库中包含此码字,但仍然只使用被链接字库中的字符。
Tahoma=005c, 00a5, 007e, 0391-03c9, 2026, 2116, 221a, 25a0-25ff
当添加了中文字库支持时,实际上也就是将中文字库作为被链接字体使用的:
[HKEY_LOCAL_MACHINE\SYSTEM\GDI]
"FontLinkMethods"=dword:1
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
"Tahoma"="\\Windows\\simsun.ac3,NSimSun"
"Courier New"="\\Windows\\simsun.ac3,NSimSun"
"Arial"="\\Windows\\simsun.ac3,NSimSun"
"Times New Roman"="\\Windows\\simsun.ac3,NSimSun"
"Symbol"="\\Windows\\simsun.ac3,NSimSun"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SkipTable]
"Tahoma"="005c,00a5,007e,0391-03c9,2026,2116,221a,25a0-25ff" // 0391-03c9 is Greek chars.
"Arial"="005c"
"Courier New"="005c"