`
stchou
  • 浏览: 205203 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

超级详细解析——字模

阅读更多

超级详细解析——字模

一、简介

汉字库:

即存储汉字的仓库。现在常使用的汉字库有 HZK16HZK24HZK32...即对应的16*1624*2432*32汉字点阵字库。16X16点阵方式是最基础的汉字点阵,存储一、二级汉字及符号8836个,需要 282.5 kB的容量;而32X32点阵存储8836个汉字,需要1.132MB存储容量。由上我们看出,字型库存储容量大是汉字信息处理的特点。所以多数汉字信息处理系统把汉字库放在磁盘上,

 

 

字模:

字模点阵码的点阵规模除16X1624X24点阵外,还有32X3264X64128X128点 阵,甚至更高的512X512点阵。点阵规模小,分辨率差,字形不美观,有些笔划复杂的字和繁体字难以表示,但所需存储容量小,易于实现;点阵规模大,则分辨率高,字形美观,但所需存储容量大。

 

简单来说,大家应该熟悉 windows的造字程序吧。



 

就是类似上图的东西。

 

二、汉字库文件

常用的汉字库文件有   HZK16HZK24HZK32HZK161等等,所对应的汉字,之上的简介已经说得很清楚了。

文件解析:

  总所周知,中文字符都是使用两个字节构成的,故,我们可以简称问  

   高八位   字节一

   第八位   字节二

Java写发为:

 

 

byte iHigh, iLow;//高8位,低8位

iHigh = (byte) (data[1]);

iLow = (byte) (data[0]);

 

每一个汉字在字库文件中的对应偏移量都具有一个公式,比如HZK16来说

则是:

 

IOffset  =  [(低八位-0xa1)*94(十进制)+(高八位-0xa1)]*32(十进制

 

0xa116进制,对应十进制就是: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进制的二进制位上为 的 以一个 ○ 为代表画出来到窗体上即可。

/**

 * 画出一个字模

 * @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
  • zimo.zip (1.9 MB)
  • 描述: 源代码
  • 下载次数: 185
11
6
分享到:
评论
4 楼 螺旋懒虫 2018-07-18  
原本是想自己画点阵的,一来画的不标准,也不好解析(用excel画),二来工作量巨大无比,
思路真是狭窄,直到最近才有了找点阵字库提供点阵源数据的想法,但又不清楚要怎么加载解析字库文件,网上搜了不知所云,代码调不通,缺这少那的,没一个完整能用的,
直到试了你的代码,豁朗开朗,才有了具体实现思路,真是非常感谢!
3 楼 螺旋懒虫 2018-07-18  
这个程序解决了我怎么加载点阵字库文件的问题,和怎么去拿到汉字对应的点阵数据,
网上找了很多相关博客,你这篇代码注释得很详细,有些方面我不需要关注,但详细的
注释提供了思维的连续性,非常感谢,庆幸自己找到了一篇好文章,解决了我的起始问题
2 楼 慕容墨风 2017-11-10  
你好,我用你的测试程序发现数字提取不了
1 楼 androidcom 2016-07-21  
很不错

相关推荐

    超好用的字模软件——超好用的字模软件

    本文将详细讲解字模软件的相关知识点,以及如何使用提供的两个文件——HZK16.dat和字模.exe。 首先,我们要理解什么是字模。字模是计算机字体的基础,它是由一系列点或像素组成的图像,代表了一个特定的字符。在...

    字模软件——汉字数字化lcd显示.zip

    4. **文档**:详细介绍软件的使用方法、字模格式、编码方式以及可能遇到的问题和解决办法。 在实际应用中,开发者需要根据嵌入式系统的具体需求,如LCD的分辨率、颜色深度、驱动方式等,选择合适的字模大小和编码...

    超级任天堂SFC,ROM字模转换程序8X16-8X12

    《超级任天堂SFC ROM字模转换程序8X16-8X12》是一款专为游戏汉化设计的实用工具,由VB编程语言编写。它主要服务于SFC(Super Famicom,即超级任天堂)游戏的内核,帮助用户将8像素宽16像素高的字符图形(8X16字模)...

    字模精灵(点阵 字模精灵 绿色版)

    《字模精灵——高效便捷的点阵字模处理工具》 在数字显示和文本处理领域,点阵字模是至关重要的元素。点阵字模,简单来说,就是由像素点构成的文字图形,常用于LED显示屏、电子表、游戏机等各种需要以像素形式展示...

    字模提取软件——晓奇制作

    【晓奇字模提取软件】是一款专用于字幕和字符图像处理的专业工具,尤其适合于ASCII码和宋体字形的提取。它具有高效且精准的处理能力,能够满足用户在不同场景下的字模需求,例如在嵌入式系统、游戏开发、电子显示屏...

    字模提取V2.1.rar_V2.1_think3aj_字模_字模提取_字模提取使用

    本文将详细介绍"字模提取V2.1"这一工具,它是由think3aj开发的V2.1版本,旨在为用户提供简单易用的字模提取解决方案。 "字模提取V2.1"是一个专为开发者和设计师量身定制的软件,它的主要功能在于从已有的字体文件中...

    字模生成工具 字模生成工具

    在IT领域,字模生成工具是一种非常实用的软件工具,主要用来创建和处理字符的图形表示,即我们常说的字模。字模是计算机显示或打印文字时所使用的图像数据,通常由点阵组成,每个点代表像素的一种状态。本文将深入...

    VB编写的字模提取加串行通讯上位机程序

    在本文中,我们将深入探讨一个用VB编写的特殊程序——字模提取加串行通讯上位机程序,以及它是如何与LED显示屏进行配合的。 首先,字模提取是计算机图形处理中的一个重要环节。字模,即字符的图形表示,通常以点阵...

    0~9数字字模提取值——基于LCD12864

    LCD12864中数字的显示规格为8X16。这里整理了阿拉伯数字0~9的字模提取值,方便大家直接下载使用。

    超级任天堂SFC,ROM字模转换程序8X12(2bpp)转8X16(2bpp)

    标题中的“超级任天堂SFC,ROM字模转换程序8X12(2bpp)转8X16(2bpp)”是指一个特定的工具,它主要用于处理超级任天堂(Super Famicom,简称SFC)游戏的ROM文件。在游戏开发和汉化过程中,字模(Character Tile)是...

    字模_C语言_c语言字模放大_字模_

    在程序中,通常需要解析这个字模文件,将其中的数据加载到内存,然后根据需要放大或缩小。 总的来说,这个C语言实现的字模放大和缩小程序,不仅展示了C语言在处理二进制数据和位操作方面的强大能力,也为嵌入式...

    C#制作字模提取程序

    下面将详细阐述这个程序的主要特点及其在.NET Framework 4环境下开发的相关知识点。 1. **C#编程语言**:C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows桌面应用、游戏开发、移动应用以及Web应用等...

    字模提取,汉字提取字模工具

    3. 提取字模:工具会解析字体文件,找到指定字符的字形信息,并将其转换为字模数据。 4. 转换与优化:根据目标平台的需求,可能需要对字模进行转换或优化,如压缩、裁剪或调整大小。 5. 存储与使用:最后,将转换后...

    字模提取V2.2.rar

    《LED字模提取工具——ZIMO V2.2详解及应用》 LED字模提取工具ZIMO V2.2是一款专用于从图像中提取LED显示字符的软件,它在LED显示屏设计、制作以及编程领域中扮演着至关重要的角色。本文将深入探讨这款工具的功能、...

    字模提取 V2.2 绿色

    标题中的"字模提取 V2.2 绿色"指的是该工具的最新版本——2.2版,且“绿色”通常意味着这是一个便携式软件,无需安装即可直接运行,不会在用户的系统上留下任何痕迹,方便用户随身携带和使用。 在描述中反复提到的...

    汉字字模.zip_图像字模_图像字模软件_字模_字模生成图像_汉字字模生成软件

    16X16汉字字模生成软件 自行设计图像自动生成字模

    字模反模工具:反字模软件.zip

    字模可以是点阵字模(固定像素大小)或矢量字模(基于数学路径,可缩放)。在嵌入式系统中,由于资源限制,点阵字模更常见,因为它们可以直接映射到显示屏的像素。 "反模",又称为反色或反相,是一种图像处理技术,...

    LTDC—液晶显示中英文(第3节) —字模及显示原理.pptx

    标题 "LTDC—液晶显示中...总的来说,这篇文档详细介绍了液晶显示中英文字符的核心概念,包括字符编码、字模的结构以及如何在STM32平台上实现字模的显示。这对于理解和开发基于STM32的液晶显示项目具有重要的指导意义。

Global site tag (gtag.js) - Google Analytics