bsp; 区位码1 + (10100000) = 机内码1; 这样的话,点阵数据,就可以通过汉字"机内码"-> "区位码"进行索引、查找。
前面已经讲了一个汉字,在表中要占用32字节,所以,我们定义了一个含有32个元素的数组: $buffer=array(0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0); 用来保存从字库读出的32个字节数据。
接下来的问题,某一个字符,到底保存在文件的什么位置呢?
由于一个汉字用了32个字节,而GB-2312区位码表表有94行、94列,那么,只要知道该字符在表中是第几个,再乘以32就行了。 所以定义偏移量: $offset=(94*($qh-1)+($wh-1))*32; $qh表示区(qu)、$wh表示位(wei);减1,是因为PHP从0开始计数。 位置找到,就只需要用fseek()函数定到码表的这个位置,然后读32字节到$buffer就行了。 另外,由于中文是由两个字节组成,而前面给出的点阵示例是8位,一个字节,所以,画点的代码要修改一下: for($hang=0;$hang<16;$hang++) for($j=0;$j<2;$j++) //因为是两个字节,所以插入一个循环 for($gezi=0;$gezi<8;$gezi++) { imagesetpixel ( $image, $gezi +8*$j, $hang , $color); }
好,我们开始编程吧!
/************************************* * 文件名:'draw1.0.
上一页 [1] [2] [3] [4] [5] [6] 下一页 |