自制字库ASC12

    这两天做屏幕的时候,看到之前从网上downlod的字库满足不了需要。翻阅了很多的blog,总结了并实现了自己定制制作字库的接口。

    里面主要有两个接口,一个是将按要求从取某软件取得十六进制的数组放置在txt文件,然后调用以下的函数接口,完成txt文件到bin文件的转换。生成的bin文件既是需要的字库文件。

   以下是我自己取模软件的相关设置和取得十六进制的txt文件

   取模软件的设置和后面读取字库的顺序保持一致,这样读出来就会一致。这里暂时就不提供读取的接口了。同时我这里是对12*12的ASCII的取字,故设置为12*6,取出来是每个ASCII是12个十六进制。然后将12个的十六进制数,转换成一个数字,保存在bin文件中。

   下面是文件的转换的接口:

 

#include <stdio.h>  
#include <stdlib.h> 

/* The two file need the user define */
#define TXTFILE  "file.txt" /* the file save the typehead hexadecimal */
#define BINFILE  "file.bin" /* change the txt file to bin file */

/********************************************************************************
*Func Name:			ChangeChar2Number
*Func Function: 	Change the char to the number
					16 to 10 
*Func Params :		char ch
*Result from Func:	unsigned char
*Author :			None
*Data of Creation:		2018-02-27
*Data of Modification:	none
*Author of Modification:none
*Reason for Modification:none
*Version : 			1.0
*History of Version :	none
**********************************************************************************/
unsigned char ChangeChar2Number(char ch)  
{  
   unsigned char temp=0;  
   
   if(ch>=0x30 && ch<=0x39)
   {
	   temp = ch-0x30; 
   }   
   else if(ch>=0x41 && ch<=0x46)  
   {
	  temp = 0x0a+(ch-0x41);  
   }   
   else if(ch>=0x61 && ch<=0x66) 
   {
	   temp = 0x0a+(ch-0x61); 
   }
   else
   {
	  temp =0xff; 
   }	   
          
   return temp;  
}  

//将ascii_zk.txt转换为二进制文件  
/********************************************************************************
*Func Name:			ChangeTxtToBin
*Func Function: 	Change the txt file to bin
*Func Params :		None
*Result from Func:	int
*Author :			None
*Data of Creation:		2018-02-27
*Data of Modification:	none
*Author of Modification:none
*Reason for Modification:none
*Version : 			1.0
*History of Version :	none
**********************************************************************************/
int ChangeTxtToBin(void)  
{  
    char buffer[5];  
    unsigned char ch=0;  
      
    int loop = 0;  
      
    FILE *frp = NULL;  
    FILE *fwp = NULL;  
      
	/* 0x00, read the txt file each elements */
    for(loop = 0; loop < 5; loop++)  
	{
		buffer[loop] = 0; 
	}
        
      
    frp = fopen(TXTFILE,"r"); 
	if(0 > frp)
	{
		return -1;
	}
	
    fwp = fopen(BINFILE,"w");  
    if(0 > fwp)
	{
		return -1;
	}
	
    /* Txt file the ending elements ending with the ASCII full stop */ 
    while(buffer[4] != 0x2e)  
    {  
		/* Read the each elements example: 0x01, */
		for(loop = 0; loop < 5; loop++)  
		{
			buffer[loop] = fgetc(frp); 
		}
		
		/* Change the elements char 0x01, 0 and 1 to number  */
        ch = ChangeChar2Number(buffer[2]); 
        ch *= 16;
        ch = ch + ChangeChar2Number(buffer[3]);  
        
		/* save the elements changed to the bin file */
        fputc(ch,fwp);  
    }  
      
    fclose(frp);  
    fclose(fwp);  
    frp = NULL;
	fwp = NULL;
	
    return 0;  
}  

  其中上面的文件宏需要自己定义,file.txt文件是自己取模的保存十六进制数组的文件,后面是希望生成的bin文件的名称

  下面是我的txt文件,该文件只有一行,最后以ASCII的句号结束:

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x48,0xFC,0xFC,0x48,0x48,0xFC,0xFC,0x48,0x48,0x00,0x00,0x10,0x30,0x48,0x40,0x30,0x08,0x48,0x30,0x10,0x00,0x00,0x00,0x00,0x40,0xA4,0x48,0x10,0x20,0x48,0x94,0x08,0x00,0x00,0x00,0x00,0x30,0x48,0x50,0x20,0x54,0x58,0x50,0x2C,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x40,0x40,0x40,0x40,0x20,0x10,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0xFC,0x78,0x78,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x10,0x20,0x40,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x08,0x30,0x08,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x38,0x40,0x40,0x30,0x08,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x40,0x40,0x70,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x10,0x20,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x30,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x38,0x08,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x10,0x20,0x00,0x00,0x00,0x00,0x08,0x30,0x40,0x80,0x40,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x10,0x08,0x10,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x08,0x10,0x20,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x30,0x48,0x98,0xA8,0xA8,0x98,0x40,0x30,0x00,0x00,0x00,0x00,0x10,0x28,0x28,0x44,0x7C,0x44,0x44,0x00,0x00,0x00,0x00,0x00,0x70,0x48,0x48,0x70,0x48,0x48,0x70,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x40,0x40,0x40,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x60,0x50,0x48,0x48,0x48,0x50,0x60,0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x40,0x78,0x40,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x40,0x70,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x30,0x40,0x40,0x58,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x48,0x48,0x48,0x78,0x48,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00,0x00,0x00,0x00,0x78,0x10,0x10,0x10,0x10,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x48,0x50,0x60,0x50,0x48,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x84,0xCC,0xB4,0x84,0x84,0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x84,0xC4,0xA4,0x94,0x8C,0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x70,0x48,0x48,0x70,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x0C,0x0C,0x00,0x00,0x00,0x70,0x48,0x48,0x50,0x60,0x50,0x48,0x44,0x00,0x00,0x00,0x00,0x30,0x48,0x40,0x30,0x08,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x84,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x88,0x88,0x88,0x50,0x50,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0x84,0x84,0x94,0xAC,0xC4,0x00,0x00,0x00,0x00,0x00,0x84,0x48,0x30,0x30,0x48,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x48,0x48,0x48,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x10,0x20,0x40,0x80,0xF8,0x00,0x00,0x00,0x00,0x00,0x70,0x40,0x40,0x40,0x40,0x40,0x70,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00,0x00,0x00,0x00,0x20,0x50,0x50,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x08,0x38,0x48,0x48,0x38,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x70,0x48,0x48,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x40,0x40,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x38,0x48,0x48,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x40,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x10,0x28,0x20,0x78,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x38,0x08,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x70,0x48,0x48,0x48,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x10,0x10,0x50,0x20,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x48,0x50,0x60,0x50,0x48,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0xB4,0xB4,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x64,0x44,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x70,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x38,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x50,0x60,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x40,0x30,0x08,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x70,0x20,0x28,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x48,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x44,0x28,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x84,0xB4,0xB4,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x48,0x30,0x30,0x48,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x48,0x48,0x38,0x08,0x48,0x30,0x00,0x00,0x00,0x00,0x78,0x08,0x10,0x20,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x20,0xC0,0xC0,0x20,0x20,0x18,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x60,0x10,0x10,0x0C,0x0C,0x10,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0xB4,0x88,0x00,0x00,0x00,0x00.


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值