16点阵字库查看,可查看16/24/32点阵字库文件中的文字,并可将其转换为C语言数组形式的文本文件,方便将其编入源程序中。
16×16点阵字库
一般我们使用16*16的点阵宋体字库,所谓16*16,是每一个汉字在纵、横各16点的区域内显示的.不过后来又有了HZK12、HZK24,HZK32和HZK48字库及黑体、楷体和隶书字库.
虽然汉字库种类繁多,但都是按照区位的顺序排列的.前一个字节为该汉字的区号,后一个字节为该字的位号.
每一个区记录94个汉字,位号则为该字在该区中的位置.
因此,汉字在汉字库中的具体位置计算公式为:94*(区号-1)+位号-1.
减1是因为数组是以0为开始而区号位号是以1为开始的.
这仅为以汉字为单位该汉字在汉字库中的位置,那么,如何得到以字节为单位得到该汉字在汉字库中的位置呢?
只需乘上一个汉字字模占用的字节数即可,
即:(94*(区号-1)+位号-1)*一个汉字字模占用字节数,而按每种汉字库的汉字大小不同又会得到不同的结果.
以16*16点阵字库为例,计算公式则为:(94*(区号-1)+(位号-1))*32.
汉字库文该从该位置起的32字节信息即记录了该字的字模信息.
了解点阵汉字及汉字库的构成原理后,显示汉字就变得简单.以16*16点阵字库为例,
通常的方法是:
将文件工作指针移到需要的汉字字模处、将汉字库文件读入一2*16数组再用for循环一位位地显示.
#include "graphics.h"
#include "stdio.h"
main()
{ int i=VGA,j=VGAHI,k;
unsigned char mat[16][2],chinease[3]="我";
FILE *HZK;
if((HZK=fopen("hzk16","rb"))==NULL)exit(0);
initgraph(&i,&j,"");
i=chinease[0]-0xa0;j=chinease[1]-0xa0; /*获得区码与位码*/
fseek(HZK,(94*(i-1)+(j-1))*32l,SEEK_SET);
fread(mat,32,1,HZK);
for(j=0;j<16;j++)
for(i=0;i<2;i++)
for(k=0;k<8;k++)
if(mat[j][i]&(0x80>>k)) /*测试为1的位则显示*/
putpixel(i*8+k,j,WHITE);
getch();
closegraph();
fclose(HZK);






















大小: 28.4M

大小: 94.9M
PDF文件转换成Word(Solid Converter PDF)10.0.9341.3476 中文特别版
Restorator 2009V1807Bulid绿色中文免费版
汉王PDF转Wordv8.1简体中文版
得力PDF转WORDv1.8.6.6 官方免费版
福昕PDF转Word转换器4.0.0.1211官方免费版
PDF修改器2.5.2.0 绿色免费版
Flash转换工具Magic Swf2Avi2008 汉化特别版
Excel文件修复工具(GetData Repair My Excel)v1.1.0.71 英文破解版
DocTranslate(翻译Doc和Ppt文档的语言)V1.1.0.2英文绿色版
扬帆绿色软件制作工具那片叶子最终版
Cogniview PDF2XL Enterprise(把pdf转换excel工具)v4.6.0.179英文绿色特别版
Abdio PDF Converter Pro(转换文件格式到PDF)V6.1英文安装版
用友U8科目错误修正工具V1.0绿色版
AJC Grep(文件搜索替换、数据提取)V1.3.4绿色英文特别版
RecycleBinExV1.0.5.530 汉化绿色版
AJC Diffv1.91英文绿色特别版