Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106278
  • 博文数量: 33
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 188
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-23 19:19
文章分类

全部博文(33)

文章存档

2015年(22)

2014年(11)

我的朋友

分类: C/C++

2015-01-11 11:30:39

来源:http://blog.csdn.net/turingo/article/details/8191712
  1. #include   
  2.   
  3. #define FONT_SIZE   (16)    /* 字体大小 */  
  4.   
  5. /* 
  6.   获取汉字在汉字库中的索引位置 
  7.   根据GB2312/GBK编码规则,汉字的低字节hz[0]是区码,高字节hz[1]是位码,汉字库从区位码0xa1a1开始存放汉字 
  8. */  
  9. #define HZ_INDEX(hz)    ((hz[0] - 0xa1) * 94 + (hz[1] - 0xa1))  
  10. #define DOTS_BYTES  (FONT_SIZE * FONT_SIZE / 8) /* 汉字点阵数据所占的字节数 */  
  11.   
  12. int main(int argc, char* argv[])  
  13. {  
  14.     FILE* hzk;  
  15.     unsigned char song[2] = "\xcb\xce"/* “宋”字的区位码为0xcbce */  
  16.     unsigned char dots[DOTS_BYTES];  
  17.     unsigned char b;  
  18.     int i, j, k;  
  19.   
  20.     /* 打开汉字库hzk16,并从中提取“宋”字的点阵数据 */  
  21.     if((hzk = fopen("hzk16""rb")) == NULL)  
  22.     {  
  23.         return -1;  
  24.     }  
  25.     fseek(hzk, HZ_INDEX(song) * DOTS_BYTES, SEEK_SET);  
  26.     fread(dots, sizeof(unsigned char), DOTS_BYTES, hzk);  
  27.     fclose(hzk);  
  28.   
  29.     /* 用“*”号根据点阵数据显示“宋”字 */  
  30.     for(i = 0; i < FONT_SIZE; i++)  
  31.     {  
  32.         /* 每行共FONT_SIZE / 8个字节 */  
  33.         for(j = 0; j < FONT_SIZE / 8; j++)  
  34.         {  
  35.             b = dots[i * 2 + j];  
  36.             /* 从左至右的点分别对应字节从高到低的位值 */  
  37.             for(k = 0; k < 8; k++)  
  38.             {  
  39.                 if(b & 0x80)  
  40.                     printf("%c "'*');  
  41.                 else  
  42.                     printf("  ");  
  43.                 b <<= 1;  
  44.             }  
  45.         }  
  46.         printf("\n");  
  47.     }  
  48.       
  49.     return 0;  
  50. }  

程序编译运行后会出现如下的显示效果,


[plain] view plaincopy
  1.             *                     
  2.               *                   
  3.   * * * * * * * * * * * * * *     
  4.   *                         *     
  5. *             *           *       
  6.               *                   
  7.               *           *       
  8. * * * * * * * * * * * * * * *     
  9.             * * *                 
  10.           *   *   *               
  11.         *     *     * *           
  12.       *       *         * * *     
  13.     *         *           *       
  14.   *           *                   
  15.               *                   
  16.               *     
阅读(1460) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~