点阵字库制作和使用(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xclshwd/article/details/88713182

ASCII点阵位图

         ASCII编码方式用 1 byte来表示一个字符,ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。假设一个字符有8*16像素表示,需要16个字节表示一个字符数据。手工制作256点阵数据工作量很大,但是在linux内核中/lib/font/font_8x16.c文件安装ASCII值制作数组。

#define FONTDATAMAX 4096

static const unsigned char fontdata_8x16[FONTDATAMAX] = {
/* 0 0x00 '^@' */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */

	/* 1 0x01 '^A' */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x7e, /* 01111110 */
	0x81, /* 10000001 */
	0xa5, /* 10100101 */
	0x81, /* 10000001 */
	0x81, /* 10000001 */
	0xbd, /* 10111101 */
	0x99, /* 10011001 */
	0x81, /* 10000001 */
	0x81, /* 10000001 */
	0x7e, /* 01111110 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
 
    。。。。
    /* 255 0xff '' */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
	0x00, /* 00000000 */
}

二、使用方法

首先判断是不是ASCII码,如果是,获取该字符数据,其实位置为字符数值*16,长度为16字节。

字符点阵的首地址索引值即为字符的ASCII码值,即可根据字符的ASCII码值得到字符点阵首地址,首地址为:fontdata_8x16[ASCII码值*16]的地址。如字符'^A',ASCII码值为1,索引值也为1,其点阵第一行为fontdata_8x16[1*16];字符‘A’的ASCII码值为65,索引值也为65,其点阵第一行为fontdata_8x16[65*16],也即字符‘A’由fontdata_8x16[1040],fontdata_8x16[1041]......fontdata_8x16[1055] 共16个元素共同表示。
 

其他制作方法:http://blog.csdn.net/exbob/article/details/6532772


 

猜你喜欢

转载自blog.csdn.net/xclshwd/article/details/88713182
今日推荐