操作系统与网络实现 之九

来源:互联网 发布:linux http server 编辑:程序博客网 时间:2024/05/29 13:46

 

点阵字库

 

字母Y

对应bit

字母A

对应bit

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

M

M

 

 

M

M

 

01100110

 

 

 

M

 

 

 

 

00010000

 

M

M

 

 

M

M

 

01100110

 

 

M

M

M

 

 

 

00111000

 

M

M

 

 

M

M

 

01100110

 

M

M

 

M

M

 

 

01101100

 

M

M

 

 

M

M

 

01100110

M

M

 

 

 

M

M

 

11000110

 

 

M

M

M

M

 

 

00111100

M

M

 

 

 

M

M

 

11000110

 

 

 

M

M

 

 

 

00011000

M

M

M

M

M

M

M

 

11111110

 

 

 

M

M

 

 

 

00011000

M

M

 

 

 

M

M

 

11000110

 

 

 

M

M

 

 

 

00011000

M

M

 

 

 

M

M

 

11000110

 

 

 

M

M

 

 

 

00011000

M

M

 

 

 

M

M

 

11000110

 

 

M

M

M

M

 

 

00111100

M

M

 

 

 

M

M

 

11000110

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

 

 

 

 

 

 

 

00000000

 

对于字母显示原理如下:

8*16阵列排列,每一行为一个字节,当读入的位为1时,显示一个点,16个字节全部读入,显示完整的字母

字母Yasc16字库文件中的信息就是由16个字节表示:00 00 66 66 66 66 3C 18 18 18 18 3C 00 00 00 00

字母Aasc16字库文件中的信息就是由16个字节表示:00 00 10 38 6C C6 C6 FE C6 C6 C6 C6 00 00 00 00

中文显示是同样的道理。只不过中文按16*16阵列排列,每一行为两个字节

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

M

 

 

M

 

 

 

 

 

 

 

 

M

M

 

 

M

 

 

 

M

 

 

 

 

 

 

M

 

 

 

 

M

 

 

 

 

M

 

 

 

 

M

 

 

 

 

 

M

 

 

 

 

M

M

 

 

M

 

 

 

 

 

 

M

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

 

 

 

 

 

 

 

 

 

 

汉字“小”在hzk16f存储信息由32个字节表示:

01 00 01 00 01 00 01 00 01 00 01 00 09 20 19 10 21 08 41 0C 81 04 01 00 01 00 01 00 05 00 02 00 

显示一个完整的汉字“小”

 

一个汉字占2字节我们将高字节称为ch,低字节称为cl

ch最高位为一,代表汉字,也就是ch&0x80为真,判断为汉字。汉字在汉字库中的具体位置计算公式为:94*(区号-1)+位号-1

对于GB2312字库,解码的方式如下:

ch=*code;

cl=*(++code);

cl -= 0xa1;

ch -= 0xa1;

offset = ((unsigned long)94*ch + cl)*(size * 2);

 

例如“小”字,机器码是 D0 A1 

ch=0xD0 cl=0xA1

int q = ch - 0xa0 =0x30=48

int w = cl - 0xa0=1

( 94 * ( q - 1 ) + ( w - 1 ) ) =0x1142=4418

也就是“小”字在字库中顺序是在第4418位,在16X16点阵字库中,一个汉字占32字节,所以“小”字的具体偏移量就是4418X32

对于英文来说,它的机器码就是它在字库中的顺序,再乘以16就可以得到英文字母在字库中的具体偏移量。

 

0 0
原创粉丝点击