分类

16点阵字库查看 1.0 绿色版

16点阵字库查看 1.0 绿色版 xx

大小:884KB更新日期:2025/12/27

类别:系统软件语言:简体中文

已下架

    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);

    显示全部

    网友评论
    我要跟贴
    精品推荐

    猜你喜欢

    • 沙威玛传奇
    • 真人互动剧情类手游
    • 最真实的警察模拟类游戏
    • 中式风格恐怖游戏
    • 末日生存打僵尸游戏

    沙威玛传奇

    沙威玛传奇是款很受玩家欢迎的手机游戏,这款游戏中有超多不同国家的美食食谱,您可以感受到土耳其的风土人情,还能用美食征服全世界的顾客!喜欢美食经营及美食制作的顾客千万不能错过。

    相关下载

    0