📄 hzk16.h
字号:
////////////////////////////////////
// 西文状态下实现汉字输出 (hzk16)//
// hzk16.h 郁明 F_FIRE@990.net //
////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <graphics.h>
#include <string.h>
#define HZK16 "hzk16"
int test(unsigned int a,int k)
{
a<<=(k-1);
if(a&0x80)
return (1);
else
return (0);
}
void hz16(int X,int Y,char *zw,int c)
{ int n=0;
while(n!=strlen(zw)){ register int i,j;
register int xx=0;
register int yy=0;
FILE *fp;char *wm;long num;
fp=fopen(HZK16,"rb++");
if(fp==NULL){/*打开hzk16字库错误*/exit(0);}
if((zw[n]&0x80)==0)
{
num=188+zw[n]-33;
fseek(fp,(32)*num,0);
fread(wm,32,1,fp);
fclose(fp);
for(i=0;i<32;i++)
{for(j=1;j<=8;j++)
if(test(wm[i],j)==0)
xx++;
else{putpixel((xx)+X,Y+yy,c);xx++;}
if((i+1)%2==0){xx=0;yy++;}
}X=X+16;n=n+1;
}else{
zw[n]=zw[n]&0x7f;
zw[n+1]=zw[n+1]&0x7f;
zw[n]=zw[n]-0x20;
zw[n+1]=zw[n+1]-0x20;
num=(zw[n]-1)*94+(zw[n+1]-1);
fseek(fp,(32)*num,0);
fread(wm,32,1,fp);
fclose(fp);
for(i=0;i<32;i++)
{for(j=1;j<=8;j++)
if(test(wm[i],j)==0)
xx++;
else{putpixel((xx)+X,Y+yy,c);xx++;}
if((i+1)%2==0){xx=0;yy++;}
}X=X+16;n=n+2;
}}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -