超级详细解析——字模
一、简介
汉字库:
即存储汉字的仓库。现在常使用的汉字库有 HZK16、HZK24、HZK32...即对应的16*16、24*24、32*32汉字点阵字库。16X16点阵方式是最基础的汉字点阵,存储一、二级汉字及符号8836个,需要 282.5 kB的容量;而32X32点阵存储8836个汉字,需要1.132MB存储容量。由上我们看出,字型库存储容量大是汉字信息处理的特点。所以多数汉字信息处理系统把汉字库放在磁盘上,
字模:
字模点阵码的点阵规模除16X16、24X24点阵外,还有32X32、64X64、128X128点 阵,甚至更高的512X512点阵。点阵规模小,分辨率差,字形不美观,有些笔划复杂的字和繁体字难以表示,但所需存储容量小,易于实现;点阵规模大,则分辨率高,字形美观,但所需存储容量大。
简单来说,大家应该熟悉 windows的造字程序吧。
就是类似上图的东西。
二、汉字库文件
常用的汉字库文件有 HZK16、HZK24、HZK32、HZK161等等,所对应的汉字,之上的简介已经说得很清楚了。
文件解析:
总所周知,中文字符都是使用两个字节构成的,故,我们可以简称问
高八位 字节一
第八位 字节二
Java写发为:
byte iHigh, iLow;//高8位,低8位
iHigh = (byte) (data[1]);
iLow = (byte) (data[0]);
每一个汉字在字库文件中的对应偏移量都具有一个公式,比如HZK16来说
则是:
IOffset = [(低八位-0xa1)*94(十进制)+(高八位-0xa1)]*32(十进制)
0xa1为16进制,对应十进制就是:161
当然,要显示不同点阵的字模,只需要查询不同的ZK偏移量就可以了
Java代码为:
int IOffset;//文件偏移量
IOffset = (94*(iLow+256-161)+(iHigh+256-161))*sum;//+256防止byte值为负 汉字字模在字库中的偏移地址
fis.read(new byte[IOffset]);//偏移一个量纲
得到了文字起始地址后就能得到文字的字节码了,即包含 16*2 个的字节
byte iBuff[] = new byte[size*2];//连续读入
fis.read(iBuff);
三、字模打印
显然,将取得的iBuff数组转化就可以答应16进制的出来了
而java有一个Integer.toHexString直接转化为16进制字符串了。
String h16 = Integer.toHexString(iBuff[i]);//16进制字串
打印格式 C语言格式为'0X'开头,汇编为'H'结尾 所以打印出来就可以了
showC.setText(showC.getText()+"0X"+h16.charAt(length-2)+h16.charAt(length-1)+",");
showHB.setText(showHB.getText()+h16.charAt(length-2)+h16.charAt(length-1)+"H,");
四、字模画
即将每一个16进制的二进制位上为 1 的 以一个 ○ 为代表画出来到窗体上即可。
/**
* 画出一个字模
* @param mat 16进制字模组
* @param matsize 字模size
*/
public void drawHZ(byte mat[],int matsize){
//画出点阵图
int radix=10;//画出圆的直径
int i, j, k;
for(i=0;i<size;i++) /*16x16点阵汉字,一共有16行*/
{
for(j=0;j<2;j++) /*横向有2个字节,循环判断每个字节的*/
for(k=0;k<8;k++)
{
if((mat[i*2+j]&(0x80>>k))>=1){ //判断一个二进制位上为 1 则打印
System.out.print("#");
g.fillOval(j*radix*8+k*radix+80,i*radix+320,radix,radix);
}
else{
System.out.print(".");
g.drawOval(j*radix*8+k*radix+80,i*radix+320,radix,radix);
}
}
System.out.println();
}
}
运行就可以显示了:
中文:
日文:
标点:
数字:
数学符号:
五、应用
不用说,大家看到图像就能想起来应用时什么了吧。呵呵~
附件上,附有测试代码 和 常用到的字库文件:
- 大小: 39.3 KB
- 大小: 45.8 KB
- 大小: 45.6 KB
- 大小: 45.9 KB
- 大小: 45.9 KB
- 大小: 46 KB
- 大小: 61.8 KB
分享到:
相关推荐
超好用的字模软件超好用的字模软件超好用的字模软件
LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模LED点阵字模...
LCD12864中数字的显示规格为8X16。这里整理了阿拉伯数字0~9的字模提取值,方便大家直接下载使用。
将汉字数字化,供lcd等显示汉字,简单实用,嵌入式等开发人员的必备工具
比较经典的一款字幕提取软件,支持ASCII码(8*16)和宋体(16*16),支持保存为C格式和汇编格式,同样支持图像提取
16X16汉字字模生成软件 自行设计图像自动生成字模
字模提取V2.1,一款很好的字模提取工具,使用方便
字模生成工具
字模软件
字模软件/单片机字模软件 字模软件/单片机字模软件 字模软件/单片机字模软件 字模软件/单片机字模软件
对单片机的led\lcd显示的字模提取要用到的三款实用的字模提取软件——点阵取字模软件、点阵液晶字模图片提取软件、字模提取,总有一款适合你
液晶点阵字模提取,液晶点阵字模提取,液晶点阵液晶点阵字模提取,字模提取,
LED字模提取软件LED字模提取软件LED字模提取软件LED字模提取软件LED字模提取软件LED字模提取软件
字模软件 可以取汉子 或者英文 生成的为BIN文件
3.2寸TFT工具__彩色图像转换软件和字模转换软件——STM32.很不错。
字模提取,汉字提取字模工具,C和单片机编程都会用的到的
取汉字、数字、英文、符号的字模,也可由图形生成字模。 可取C51,或A51字模。单片机开发的好助手