社区
非技术区
帖子详情
问个关于点阵字体的问题 请达人来帮帮忙。。。。。。
ling81327
2008-04-16 08:55:12
请问如何打印出点阵字体,就是银行存折上的那种字体。无论用什么打印都可以,例如可以用WORD 也可以用FR 只要能打印出来就行 。。。。。。请帮帮忙,告知一下思路和解决办法
...全文
187
12
打赏
收藏
问个关于点阵字体的问题 请达人来帮帮忙。。。。。。
请问如何打印出点阵字体,就是银行存折上的那种字体。无论用什么打印都可以,例如可以用WORD 也可以用FR 只要能打印出来就行 。。。。。。请帮帮忙,告知一下思路和解决办法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhu_gx
2008-04-16
打赏
举报
回复
帮你顶一下
skylkj
2008-04-16
打赏
举报
回复
一样的.我们的英文和数字有专门的字库,是另外一个 xxx.bin文件.只是索引的时候简单一点,没那么多分区
ling81327
2008-04-16
打赏
举报
回复
我再问一下 如果是只打印英文字母和数字 是不是就不要这么麻烦了?
ling81327
2008-04-16
打赏
举报
回复
疯狂吐血中。。。。。我还以为下载了字库就OK了呢,我先研究研究先,谢谢LS
skylkj
2008-04-16
打赏
举报
回复
这个要看你用的字库的说明了
一般字库的bin文件是把字符按区划分后顺序存储.你根据所要打印的字符编码计算出偏移量,然后取出点阵数据.
这里是我们用的24点阵汉字字库的索引程序
FILE *fp;
long Addr=0;
fp=fopen("/lib/gt24.bin","rb");
if(fp==NULL)
{
printf_debug("Font not found.\n");
fclose(fp);
return -2;
}
if(Str[1]==0x7F)
{
printf_debug("No HZ Font.\n");
fclose(fp);
return -3;
}
if(Str[0]>=0xA1 && Str[0]<=0xAB && Str[1]>=0xA1)/*Section 1*/
Addr = (Str[0] - 0xA1)*94+(Str[1]-0xA1);
else if(Str[0]>=0xA8 && Str[0]<=0xA9 && Str[1]<0xA1)/*Section 5*/
{
if(Str[1]>0x7F) Addr=(Str[0]-0xA8)*96+(Str[1]-0x40)+845;
else Addr=(Str[0]-0xA8)*96+(Str[1]-0x40)+846;
}
if(Str[0]>=0xB0 && Str[0]<=0xF7 && Str[1]>=0xA1)/*Section 2*/
Addr=(Str[0]-0xB0)*94+(Str[1]-0xA1)+1038;
else if(Str[0]<0xA1 && Str[0]>=0x81)/*Section 3*/
{
if(Str[1]>0x7F) Addr=(Str[0]-0x81)*190+(Str[1]-0x40)+1038+6767;
else Addr=(Str[0]-0x81)*190+(Str[1]-0x40)+1038+6768;
}
else if(Str[0]>=0xAA && Str[1]<0xA1)/*Section 4*/
{
if(Str[1]>0x7F) Addr=(Str[0]-0xAA)*96+(Str[1]-0x40)+1038+12847;
else Addr=(Str[0]-0xAA)*96+(Str[1]-0x40)+1038+12848;
}
if(Str[1]>=0x30 && Str[1]<=0x39)/*Extended Section*/
{
if(Str[3]<0x30 || Str[3]>0x39)
{
printf_debug("No HZ Font.\n");
fclose(fp);
return -4;
}
Addr=(Str[2]-0x81)*12600+(Str[3]-0x39)*1260+(Str[0]-0xEE)*10+(Str[1]-0x39)+22046;
if(Addr<22046 || Addr>22046+6530)
{
printf_debug("No HZ Font.\n");
fclose(fp);
return -5;
}
}
Addr*=72;
fseek(fp,Addr,SEEK_SET);
fread(FontBuf,1,72,fp);
fclose(fp);
return 0;
大致上就是先通过字符编码来确定所属哪个汉字区,在通过字库说明里面的偏移计算公式计算出偏移Addr,然后读出之后的72字节数据就是该汉字的点阵数据,再根据字典数据的组织打印到屏幕或者打印机.
上面的代码仅仅只是参考,因为我们用的字库不一样
ling81327
2008-04-16
打赏
举报
回复
我又下载了一个Hzk14.bin,可还是不知道怎么用,郁闷。。。。。HELP , FIRE
ling81327
2008-04-16
打赏
举报
回复
谢谢LS提醒,我下载了一个HZK16字库,符合要求吗?请问怎么用呢?
skylkj
2008-04-16
打赏
举报
回复
银行存折打印机都是针打(针式打印机),你去找个针打用的点阵字库就行了
ling81327
2008-04-16
打赏
举报
回复
PS: 请大家不要乱灌水 水是没分的 谢谢
brightyang
2008-04-16
打赏
举报
回复
去下载一下这种字体...
skylkj
2008-04-16
打赏
举报
回复
http://hi.baidu.com/hrman/blog/item/4616bc2675ce13128a82a193.html
这里有你下的那个HZK16的使用说明
关键就是计算偏移量,然后就是操作文件读取.
delphi读取二进制文件可以用Tfilestream
ling81327
2008-04-16
打赏
举报
回复
skylkj GG 有没有DELPHI的程序啊 C++我看不懂
61种flash
字体
特效源文件下载
Flash 5
点阵
汉字特效这是一个用
点阵
方式的汉字实现的一些效果的集合,如果您自己动手会制作出惊人的东西(16KB) 61,2000121802102.zip 激光字 一个老的效果:用激光来写字,关心特殊效果的朋友一定要看看(6KB)...
点阵
字体
, 矢量
字体
点阵
字体
也叫位图
字体
,其中每个字形都以一组二维像素信息表示。这种文字显示方式于较早前的电脑系统(例如未有图形接口时的 DOS 操作系统)被普遍采用。由于位图的缘故,
点阵
字体
很难进行缩放,特定的
点阵
字体
只能...
点阵
字体
的旋转
对于中文打印大概涉及三个方面的内容:中文输入、汉字编码与转码、
点阵
字体
的处理。对于这三个方面涉及的知识还是挺多的,在此就对
点阵
字体
相关的内容做一个小结。 一、
点阵
字体
概述 做过单片机
点阵
开发的同学肯定...
点阵
字体
(Bitmap font)
Bitmap font
点阵
字体
是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。
点阵
字体
优点是显示速度快,不像矢量
字体
需要计算;其最大的缺点是不能放大,一旦放大后就会发现文字...
点阵
字体
(也叫位图
字体
或光栅
字体
)、矢量
字体
点阵
字体
是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。
点阵
字体
也叫位图
字体
,其中每个字形都以一组二维像素信息表示。 中文名
点阵
字体
外文名 Bitmap font 优 点 显示速
非技术区
828
社区成员
53,611
社区内容
发帖
与我相关
我的任务
非技术区
Delphi 非技术区
复制链接
扫一扫
分享
社区描述
Delphi 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章