fontviewer是一款免费的16点阵字库查看器,主要用于浏览系统安装的所有字体,包括16点阵、24点阵和32点阵,涵盖几乎所有的字体规格。软件绿色免安装,操作简单,需要的朋友可以下载!
软件功能
- 查看所有已安装字体的清单。
- 查看指定目录下所有未安装字体的清单。
- 删除已安装的字体。
- 对字体按类别进行归类和管理。
- 安装指定文件夹中的一个或多个选定的字体。
- 用自定义的示例文本打印已安装的各字体的清单。
- 在临时存储区(示例文本区)测试各种字体的效果。
- 可以查看所有已安装字体的清单。
- 可以查看指定目录下所有未安装字体的清单。
- 可以删除已安装的字体。
- 可以对字体按类别进行归类和管理。
- 可以安装指定文件夹中的一个或多个选定的字体。
- 可以用自定义的示例文本打印已安装的各字体的清单。
- 可以在临时存储区(示例文本)测试任何字体的效果。
- 简体中文/英文双语版。
点阵字库说明
一般我们使用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]&(0x80>>k)) /*测试为1的位则显示*/
putpixel(i*8+k,j,WHITE);
getch();
closegraph();
fclose(HZK);