#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <process.h>
void stroutHZK12(int x, int y, int col, char *a)
{
int i, j, k, m = 0;
FILE *HZK, *ASC;
long offset;
unsigned char buf_hz[12][2], buf_asc[16];
HZK = fopen("HZK12", "rb");
ASC = fopen("ASC12", "rb");
if(HZK == NULL || ASC == NULL)
{
printf("can't open the HZ file!\n");
exit(0);
}
while(a[m] != '\0')
{
if(a[m]<0)
{ // unsigned char>> char
// 186 >> -70
i = a[m++] - 161+256; j = a[m++] - 161+256;// char >> unsigned char
offset = (94*i+j)*24l; // -70 >> 186
fseek(HZK, offset, SEEK_SET);
fread(buf_hz, 24, 1, HZK);
for(i = 0; i<12; i++)
for(j = 0; j<2; j++)
for(k = 0; k<8; k++)
if(buf_hz[i][j]&(0x80>>k))
putpixel(j*8+k+x, i+y, col);
x += 14;
}
else
{
i = a[m++];
offset = (12l*i+1);
fseek(ASC, offset, SEEK_SET);
fread(buf_asc, 12, 1, ASC);
for(i = 0; i<12; i++)
for(j = 0; j<8; j++)
if(buf_asc[i]&(0x80>>j))
putpixel(j+x, i+2+y, col);
x += 7;
}
}
fclose(HZK);
fclose(ASC);
}
void stroutHZK16(int x, int y, int col, char *a)
{
int i, j, k, m = 0;
FILE *HZK, *ASC;
long offset;
unsigned char buf_hz[16][2], buf_asc[16];
HZK = fopen("HZK16", "rb");
ASC = fopen("ASC16", "rb");
while(a[m] != '\0')
{
if(a[m]<0)
{ // unsigned char>> char
// 186 >> -70
i = a[m++]-161+256; j = a[m++]-161+256;// char >> unsigned char
offset = (94*i+j)*32l; // -70 >> 186
fseek(HZK, offset, SEEK_SET);
fread(buf_hz, 32, 1, HZK);
for(i = 0;i<16;i++)
for(j = 0;j<2;j++)
for(k = 0;k<8;k++)
if(buf_hz[i][j]&(0x80>>k))
putpixel(j*8+k+x, i+y, col);
x += 16;
}
else
{
i = a[m++];
offset = (16l*i+1);
fseek(ASC, offset, SEEK_SET);
fread(buf_asc, 16, 1, ASC);
for(i = 0;i<16;i++)
for(j = 0;j<8;j++)
if(buf_asc[i]&(0x80>>j))
putpixel(j+x, i+2+y, col);
x += 8;
}
}
fclose(HZK);
fclose(ASC);
}
void stroutBig16(int x, int y, int col, unsigned char *a)
{
unsigned char mat[16][2], buf_asc[16];
int i, j, k, m = 0;
unsigned long offset ;
FILE *BIG5 = fopen("big5.fon", "rb");
FILE *ASC = fopen("ASC16", "rb");
if(BIG5 == NULL || ASC == NULL)
{
printf("Can't find big5.fon\n");
exit(0);
}
while(a[m])
{
if(a[m] > 128)
{
i = a[m++]; j = a[m++];
if(( j>=0x40)&&( j<=0x7e ))
offset = ((i- 161)*157L + j- 0x40)*32l; //Get the offset
else if(( j>=0xa1)&&( j<=0xfe ))
offset = ((i- 161)*157L + j - 0xa1+63)*32l; //Get the offset
fseek(BIG5, offset, SEEK_SET);
fread(mat, 32, 1, BIG5);
for(i=0; i<16; i++)
for(j=0; j<2; j++)
for(k=0; k<8; k++)
if(mat[i][j]&(0x80>>k)) /*测试为1的位则显示*/
putpixel(j*8+k+x, i+y, col);
x += 16;
}
else
{
i = a[m++];
offset = (16l*i + 1);
fseek(ASC, offset, SEEK_SET);
fread(buf_asc, 16, 1, ASC);
for(i = 0; i<16; i++)
for(j = 0;j<8;j++)
if(buf_asc[i]&(0x80>>j))
putpixel(j+x, i+2+y, col);
x += 8;
}
}
fclose(BIG5);
fclose(ASC);
}
void main()
{
int i=VGA,j=VGAHI,k,m;
initgraph(&i,&j,"");
stroutHZK12(100, 180, WHITE, "HZK12: 说明12");
stroutHZK16(100, 200, WHITE, "HZK16: 说明16");
stroutBig16(100, 220, WHITE, "BIG16: 弧16");
getch();
closegraph();
}
C语言点阵字库文件及原码HZK
5星 · 超过95%的资源 需积分: 34 123 浏览量
2010-06-16
01:02:34
上传
评论
收藏 523KB RAR 举报
stream80
- 粉丝: 7
- 资源: 105
最新资源
- alu.v
- H21-282学习参考.pdf
- QuestionTwo.java
- QuestionOne.java
- AWS Certified Solutions Architect Study Guide -SAA-C03 .docx
- 校园小情书微信小程序源码 社区小程序前后端开源 校园表白墙交友小程序.rar
- OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- 南京邮电大学数学实验:熟练掌握 Matlab 软件的基本命令和操作
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈