LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 907|回复: 2

谁知道英文字库中字母的起点位置的算法是怎么样的?

[复制链接]
发表于 2007-11-27 15:33:18 | 显示全部楼层 |阅读模式
比如我有一个24x24的英文点阵字库,我要想知道字母'A'在字库中的起始位置应该怎么算?
 楼主| 发表于 2007-11-27 15:52:35 | 显示全部楼层
我的代码是下面这样写的,但打出来的完全不对!帮我看看哪里错了!

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define FONTFILE "./Eng24x24.dat"
  4. void puts24(int x,int y,char s_to_deplay,unsigned char colour)
  5. {
  6.         register int i,j,k;
  7.         unsigned char buf[24*3+4];
  8.         unsigned long location = 24*3*(s_to_deplay);
  9.         FILE* fp = NULL;
  10.         unsigned long tmp = 0;

  11.         fp = fopen(FONTFILE, "rb");
  12.         if (NULL == fp)
  13.         {
  14.                 printf("fail to open font file\n");
  15.                 return ;
  16.         }
  17.         fseek(fp, location, SEEK_SET);
  18.         memset(buf, 0, sizeof(buf));
  19.         fread(buf, 24*3, 1, fp);

  20.         for(i=0;i<24;i++)
  21.         {
  22.                 tmp = (buf[i])|(buf[i+1]<<8)|(buf[i+2]<<16);
  23.                 //tmp = (buf[i]<<16)|(buf[i+1]<<8)|(buf[i+2]);
  24. #if 0
  25.                 printf("tmp[%x]\n", tmp);
  26. #else
  27.                 for(j=0;j<24;j++)
  28.                 {
  29.                         if(((tmp>>(23-j))&0x1)!=0)
  30.                         {
  31.                                 putchar('*');
  32.                         }
  33.                         else
  34.                         {
  35.                                 putchar(' ');
  36.                         }
  37.                 }
  38.                 putchar('\n');
  39. #endif
  40.         }
  41.         fclose(fp);
  42.         return ;
  43. }

  44. int main(int argc, char *argv[])
  45. {
  46.         char input = argv[1][0];
  47.         //printf("inut val is %x\n", input);
  48.         puts24(0,0,input,0);
  49.         return 0;
  50. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-11-28 09:10:35 | 显示全部楼层
这个字库文件的大小是多大?会不会有文件头?是不是这个文件包含所有256个字符(有些字符是不可以打印的)?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表