
用PHP获得这个字的代码、点阵和验证:
<?php
$hz="李"
$n=ord($hz)
$n1 = ord(substr($hz,0,1)) - 160
$n2 = ord(substr($hz,1,1)) - 160
$offset = ($n1-1)*94 + ($n2-1)
echo "汉字【{$hz}】,内码【".bin2hex($hz)."】,区【{$n1}】,位【{$n2}】,字库偏移【{$offset}】\n"
$hzk=substr(file_get_contents('hzk16'),$offset * 32,32)
//显示字库
$dbstr=[]
for ($i=0$i<32$i++) {
$dbstr[]=ord(substr($hzk,$i,1))
}
echo implode(',',$dbstr) . "\n"
//显示汉字
for ($i=0$i<32$i++) {
$c=ord(substr($hzk,$i,1))
//echo "$c:\n"
$m = 1<<7
for ($j=0$j<8$j++){
//echo "({$j} {$m} "
echo ($c &$m) ? '*' : '.'
//echo ")\n"
$m >>= 1
}
if ($i % 2 == 1) echo "\n"
}
?>
运行结果见下图:
那么你需要的shell脚本为:
echo ' *'
echo ' * *'
echo ' *************'
echo ' *'
echo ' * * *'
echo ' * * **'
echo ' ** * ***'
echo '** * *'
echo ' *******'
echo ' *'
echo ' ** *'
echo ' *************'
echo ' *'
echo ' *'
echo ' * *'
echo ' *'
FILE *PHZK16/*
*HZK16字库初始化_打开字库
*/
void _InitHzk16()
{
PHZK16=fopen("Hzk16","rb")
if(!PHZK16){
printf("error in Hzk16,not exist\n")
system("pause")
exit(1)
}
}
/*
*取得字码
*/
void _GetHzk16Code(unsigned char code[],unsigned char bytes[])
{
unsigned char qh,wh
unsigned long offset
qh=code[0]-0xa0/*得到区号*/
wh=code[1]-0xa0/*得到位号*/
offset=(94*(qh-1)+(wh-1))*32L/*得到偏移位置*/
fseek(PHZK16,offset,SEEK_SET)/*移文件指针到要读取的汉字字模处*/
fread(bytes,32,1,PHZK16)/*读取32 个汉字的汉字字模*/
}
/******************************************************************************************************************/
/*下面这个代码 是C画图模式下可用*/
/*
*改变x、y(左上点)的位置,就可以实现文字的横向输出
*单个文字输出
*/
void _InputHzk16(int x,int y,unsigned char code[],int color)
{
int i,j,x0=0,y0=0
unsigned char s,mat[32]
_GetHzk16Code(code,mat)
for(i=0i<16i++){
s=mat[2*i]
x0=x+7
y0=y+i
while(s){
if(s%2){
putpixel(x0,y0,color)
}
s=s/2
x0--
}
s=mat[2*i+1]
x0=x+15
while(s){
if(s%2){
putpixel(x0,y0,color)
}
s=s/2
x0--
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)