HZK16.H
资源名称:8 [点击查看]
上传用户:phillytech
上传日期:2007-01-07
资源大小:561k
文件大小:1k
源码类别:

多国语言处理

开发平台:

DOS

  1.    ////////////////////////////////////
  2.   //  西文状态下实现汉字输出 (hzk16)//
  3.  //  hzk16.h   郁明 F_FIRE@990.net //
  4. ////////////////////////////////////
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <graphics.h>
  8. #include <string.h>
  9. #define HZK16 "hzk16"
  10. int test(unsigned int a,int k)
  11. {
  12. a<<=(k-1);
  13. if(a&0x80)
  14. return (1);
  15. else
  16. return (0);
  17. }
  18. void hz16(int X,int Y,char *zw,int c)
  19. { int n=0;
  20.    while(n!=strlen(zw)){  register int i,j;
  21. register int xx=0;
  22. register int yy=0;
  23. FILE *fp;char *wm;long num;
  24. fp=fopen(HZK16,"rb++");
  25.         if(fp==NULL){/*打开hzk16字库错误*/exit(0);}
  26. if((zw[n]&0x80)==0)
  27.  {
  28.   num=188+zw[n]-33;
  29.   fseek(fp,(32)*num,0);
  30.   fread(wm,32,1,fp);
  31.   fclose(fp);
  32.   for(i=0;i<32;i++)
  33.      {for(j=1;j<=8;j++)
  34.        if(test(wm[i],j)==0)
  35.  xx++;
  36.        else{putpixel((xx)+X,Y+yy,c);xx++;}
  37.        if((i+1)%2==0){xx=0;yy++;}
  38.                   }X=X+16;n=n+1;
  39.    }else{
  40.  zw[n]=zw[n]&0x7f;
  41.  zw[n+1]=zw[n+1]&0x7f;
  42.  zw[n]=zw[n]-0x20;
  43.  zw[n+1]=zw[n+1]-0x20;
  44.  num=(zw[n]-1)*94+(zw[n+1]-1);
  45.  fseek(fp,(32)*num,0);
  46.  fread(wm,32,1,fp);
  47.  fclose(fp);
  48.     for(i=0;i<32;i++)
  49.      {for(j=1;j<=8;j++)
  50.        if(test(wm[i],j)==0)
  51.  xx++;
  52.        else{putpixel((xx)+X,Y+yy,c);xx++;}
  53.        if((i+1)%2==0){xx=0;yy++;}
  54.                   }X=X+16;n=n+2;
  55.  }}
  56. }