UCDOS点阵字库
ASC12 ASCII字库文件 12X6
ASC16 ASCII字库文件 16X8
ASC48 ASCII字库文件 48X24
Hzk12 汉字库宋体 12X12
Hzk16 汉字库宋体 16X16
hzk16F 汉字库仿宋 16X16
HZK24F 汉字库仿宋 24X24
HZK24H 汉字库黑体 24X24
HZK24K 汉字库楷体 24X24
HZK24S 汉字库宋体 24X24
HZK24T 全角字符库 24X24
HZK24Z 汉字库篆体 24X24
HZK40S 汉字库宋体 40X40
HZK40T 全角字符库 40X40
HZK48S 汉字库宋体 48X48
HZK48S 全角字符库 48X48
点阵汉字的显示
显示汉字以16*16点阵字库为例,通常的方法是:将文件工作指针移到需要的汉字字模处、
将汉字库文件读入一2*16数组再用for循环一位位地显示。以使用 VGA HI模式显示“我”字为例,程序如下:
#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,WH99vE); getch(); closegraph(); fclose(HZK); }
打印字库 : UCDOS的HZK24S(宋体)、HZK24K(楷体)或HZK24H(黑体)HZK24系列是24*24的点阵字库,
每字模占用3*24字节。如果你按照HZK16的显示方法的话,你会看到字被放倒了。这是因为该类字库与一般的汉字库不同,
这类大字模汉字库是专供打印的打印字库,为了打印的方便将字模都放倒了,使用时只要将字模的位信息纵横转置显示即可。
例如你如果定义为mat[24][3]则应该这样输出:
for(i=0;i<24;i++) for(j=0;j<24;j++) if((0x80>>i%8)&mat[j][i/8]) /*转置显示*/ putpixel(j+x,y+i,color);
一类字库HZK12,虽然属于标准字库类型,但如果你将它的字模当作12*12位计算的话,根本无法正常显示汉字。
因为字库设计者为了使用的方便,字摸每行的位数均补齐为8的整数倍,于是实际该字库的位长度是16*12,
虽然每行都多出了4位,但这4位都是0(不显示),并不影响显示效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2012-05-13 Using real data types in VHDL
2012-05-13 uart baud rate generator