操作系统与网络实现 之九

 

点阵字库

 

字母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就可以得到英文字母在字库中的具体偏移量。

 

转载于:https://www.cnblogs.com/ya20151015/p/4952525.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值