是的,字库是储存字的图像的文件,但光有图像还不成,要程序能够识别特定的内码才能知道去字库找那幅字图。现在的问题是当今Windows系统,微软并没有把四字节的内码开放出来使用,故一般的程序无法识别你所说的两万个字之外的汉字。我们现在的系统,统一是两字节的内码(一个字节是英文、阿拉伯数字等普通字符,而汉字要占两个英文字符的位置)。现在用的是GBK内码系统,是两字节的Unicode码,所以你输入四位十六进制码时就自动出汉字,但这种两字节的体系,只能容纳两万多汉字。要使用更多的字符,就要用到四字节的编码体系,即四字节Unicode码,此时每个汉字等于前面的两个。
在程序中,使用两字节编码抑或四字节编码,其实不是问题,但问题是我们的程序并不是直接读字库取字图显示的,而是要借用Windows的功能去读取和显示字图的,偏偏现在微软出品的Windows系统,不支持四字节编码,因此,当我们给出一个四字节的内码到Windows,我们当它是一个汉字,但Windows却当是两个汉字,而这两个被拆开了的假汉字它又不认识,所以显示出两个问号。
在Office套装中,因为这套程序是微软自己写的,又专门用于排版和印刷,所以它内部可以使用四字节Unicode编码并取出正确的字图,但外面的程序,Windows是不认的——不是真的不认识,而是拒绝接受。因此,UniFonts系统,虽然给出了Unicode全集中的七万字符,但只能在Office、PDF之类专用排版软件上使用。
以我现在得到的结论看,别说是VFP,即使是VB、C之类的程序语言,也无法直接使用四字节的Unicode编码显示大字符集汉字。但是,如果我们知道字库的构造,能够自己读取字库图像,那么就有办法绕开Windows,用绘图的方式显示那些汉字。这个工作量是比较大的。如果说真有使用系统功能的办法,我想恐怕就是一开始我给出的那个连接了,可惜全是英文的,看不太懂。
[ 本帖最后由 TonyDeng 于 2011-9-6 14:24 编辑 ]
在程序中,使用两字节编码抑或四字节编码,其实不是问题,但问题是我们的程序并不是直接读字库取字图显示的,而是要借用Windows的功能去读取和显示字图的,偏偏现在微软出品的Windows系统,不支持四字节编码,因此,当我们给出一个四字节的内码到Windows,我们当它是一个汉字,但Windows却当是两个汉字,而这两个被拆开了的假汉字它又不认识,所以显示出两个问号。
在Office套装中,因为这套程序是微软自己写的,又专门用于排版和印刷,所以它内部可以使用四字节Unicode编码并取出正确的字图,但外面的程序,Windows是不认的——不是真的不认识,而是拒绝接受。因此,UniFonts系统,虽然给出了Unicode全集中的七万字符,但只能在Office、PDF之类专用排版软件上使用。
以我现在得到的结论看,别说是VFP,即使是VB、C之类的程序语言,也无法直接使用四字节的Unicode编码显示大字符集汉字。但是,如果我们知道字库的构造,能够自己读取字库图像,那么就有办法绕开Windows,用绘图的方式显示那些汉字。这个工作量是比较大的。如果说真有使用系统功能的办法,我想恐怕就是一开始我给出的那个连接了,可惜全是英文的,看不太懂。
[ 本帖最后由 TonyDeng 于 2011-9-6 14:24 编辑 ]
授人以渔,不授人以鱼。