📄 anyview(x600_v6.9.1)dotfonts_readme.txt
字号:
http://hi.baidu.com/%B1%CF%D4%AA%B7%E6/blog/item/077e8ed4f24d2a05a18bb707.html
邮件描述:使用AnyView(X600_V6.9.1)点阵字库
(代码在Borland C++Builder6.0下调试通过..)
V0.1Release20080223(对应描述为点阵字(分))
字库来源:AnyView(X600_V6.9.1本身默认字库)
文件列表:
ASC12---------------6*12点阵西文字库
ASC16---------------8*16点阵西文字库
ASC24---------------10*20点阵西文字库
HZK12---------------12点阵中文字库
HZK16---------------16点阵中文字库
HZK20---------------20点阵中文字库
一下因为无法对应编码位置,所以无法显示。
FANTI12-------------12点阵中文繁体字库
FANTI16-------------16点阵中文繁体字库
FANTI20-------------20点阵中文繁体字库
V0.2Release20080220(对应描述为点阵字(合))
字库来源:AnyView(X600_V6.9.1外挂字库)
源代码支持的点阵字库
16GBK.font-------16点阵GBK字库
16GBK2.font------16点阵GBK字库
18KAI.font-------18点阵楷体字库
20KAI.font-------20点阵楷体字库
20LI.font--------20点阵隶书字库
20LI2.font-------20点阵方正隶书字库
24.font----------24点阵字库
以下未测试(似乎是Big5编码的):
12.font----------12点阵字库
12GBK.font-------12点阵GBK字库
要点:
三个已经测试的20点阵字库的特点是:
1.ASC和汉字放在一个字库中。
2.偏移量基于文件头的不同而不同。
具体说来就是:
unsigned long int ASCOffset;
unsigned long int HZKOffset;
//ASCOffset = 62L; HZKOffset = 3120L; GBK = F.;//12.font //12点阵
//ASCOffset = 59L; HZKOffset = 3071L; GBK = T.;//12GBK.font//12点阵
//ASCOffset = 59L; HZKOffset = 4073L; GBK = T.;//16GBK.font //16点粗
//ASCOffset = 64L; HZKOffset = 4080L; GBK = T.;//16GBK2.font//16点细
//ASCOffset = 68L; HZKOffset = 10265L; GBK = F.;//20KAI.font //楷书
//ASCOffset = 62L; HZKOffset = 10259L; GBK = F.;//20LI.font //隶书
//ASCOffset = 50L; HZKOffset = 10247L; GBK = F.;//20LI2.font //方正隶
//ASCOffset = 68L; HZKOffset = 9248L; GBK = F.;//18KAI.font //楷书
//ASCOffset = 59L; HZKOffset = 12302L;GBK = F.;//24.font //24点阵
//PixelSize = 20; HZKSize = 20*3; ASCSize = 20*2;//20点阵字库
//PixelSize = 18; HZKSize = 18*3; ASCSize = 18*2;//18点阵字库
//PixelSize = 24; HZKSize = 24*3; ASCSize = 24*2;//24点阵字库
//PixelSize = 16; HZKSize = 16*2; ASCSize = 16; //16点阵字库
//PixelSize = 12; HZKSize = 12*2; ASCSize = 12; //12点阵字库
所以,读取ASCII字模的位置就是
DataPos = Area * ASCSize * 1L + ASCOffset;//****关键****
所以,读取汉字库字模的位置就是
Qu = C1-160; Wei =C2-160;
if (Qu > 94) Qu = 94;
if (Wei > 94) Wei = 94;
Area = Qu;
Biti = Wei;
if (GBK)
{
//GBK汉字126区,190位
//对于连续的C1,C2
//C1区间:[129,254]
//C2区间:[64, 254]
//C1,C2区间排除7F
//针对于算法(C1 - 129)* 190 +(C2 - 64) + (C2/128)的理解
//上面的算法中有-(ch2/128)。这是因为GBK中没有7F(127)码,
//因此当ch2小于7F时,ch2/128=0,则表示7F没有计算在内。
//而当ch2大于7F时,ch2/128=1,则表示多算了7F一值,因此要去掉。
DataPos = ((C1 - 129)* 190 +(C2 - 64) + (C2/128)) * HZKSize * 1L
+ HZKOffset;
}
else
{
//GB2312汉字94区,94位
//C1区间:[161,254]
//C2区间:[161,254]
DataPos = ((Area-1) * 94L + Biti - 1) * HZKSize * 1L + HZKOffset;
}
相关:
Big5区域判定:
C1区间[161,254]
C2区间[64,126]((C1-161)*157+(C2-64))+1L;
,以及[161,254]((C1-161)*157+(C2-161+63))+1L;
的并集。
点阵字库以及源程序和目标程序可以到我的公共邮箱下载.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -