三国志从3代开始自带字库,而且不断的增加字的数量,也修改过很少一部分的字形,其实它的码序与big5是基本一致的.到5代,big5字基本全了.虽然这些都是dos时代的技术,但是从9代来看,自己带字库对提升显示效果还是很有帮助的,特别是要支持多内码的时候.像magicwin的字库就远不如9代的好,而且9代还对字用了反走样(其实就是使用了16色且包含透明色的调色板),效果看上去很不错
下面简单介绍一下三3~5的字符编码
我想big5码大家都应该比较熟悉了,两字节编码.第一个字节范围是a1~fe,第二个字节范围是40~7f,a1~fe.不过三国志里没有直接使用big5编码,但是它的编码顺序是基本相同的.它的第一个字节从92开始,到b0有间断,第二个字节分成很多段,分别是48~56,65~90,97~121,128~254,一共使用了188个码位
下面的对应是从第一个汉字开始的
转换代码如下
For j = 0 To 7 Step 2
If t(j) = 0 Or t(j) = 32 Then Exit For
tt = t(j + 1)
If t(j) < 176 Then
p = 1 - 188 + (188 * (t(j) - &H92)) * 2
Else
p = 11619 + (188 * (t(j) - 176)) * 2
End If
If tt > 47 Then tt = tt - 48
If t(j + 1) > 64 Then tt = tt - 7
If t(j + 1) > 96 Then tt = tt - 6
If t(j + 1) > 127 Then tt = tt - 5
p = p + tt + tt
Get #2, p, t(j)
Get #2, p + 1, t(j + 1)
Next j
其中#2是码表文件.这里有一个我处理过的码表,改变了某些编码的次序.不过限于时间,只保证人名的对应关系是正确
顺带说一下三国的字库.
它是14*16而不是一般的16*16.格式就是magicwin的那种啦,一位一个像素.
字库文件的名称是ziku.16p.
三九的是f_font.s9,开头就是big5码列表。
至于三十和三九差不多,只不过像素是倒序存放的
|