php点阵字,用PHP编程读取汉字点阵数据

以下为引用的内容:

<?php

/**

* 读取汉字点阵数据

*

* @author legend <legendsky@hotmail.com>

* @link http://www.ugia.cn/?p=82

* @Copyright www.ugia.cn

*/

$str = "中华人民共和国" ;

$font_file_name = "simsun12.fon" ; // 点阵字库文件名

$font_width = 12 ; // 单字宽度

$font_height = 12 ; // 单字高度

$start_offset = 0 ; // 偏移

$fp = fopen ( $font_file_name , "rb" );

$offset_size = $font_width * $font_height / 8 ;

$string_size = $font_width * $font_height ;

$dot_string = "" ;

for ( $i = 0 ; $i < strlen ( $str ); $i ++)

{

if ( ord ( $str { $i }) > 160 )

{

// 先求区位码,然后再计算其在区位码二维表中的位置,进而得出此字符在文件中的偏移

$offset = (( ord ( $str { $i }) - 0xa1 ) * 94 + ord ( $str { $i + 1 }) - 0xa1 ) * $offset_size ;

$i ++;

}

else

{

$offset = ( ord ( $str { $i }) + 156 - 1 ) * $offset_size ;

}

// 读取其点阵数据

fseek ( $fp , $start_offset + $offset , SEEK_SET );

$bindot = fread ( $fp , $offset_size );

for ( $j = 0 ; $j < $offset_size ; $j ++)

{

// 将二进制点阵数据转化为字符串

$dot_string .= sprintf ( "%08b" , ord ( $bindot { $j }));

}

}

fclose ( $fp );

echo $dot_string ;

?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值