原创 [源码]从系统“偷”字体! 漂亮的12点阵繁体汉字字库制作过程

2013-3-28 19:29 8162 21 15 分类: MCU/ 嵌入式
 

      玩单片机,做人机交互,少不了需要字库,咱中国人呢,更是少不了汉字字库。在嵌入式环境中,由于屏幕尺寸一般都比较小,使用最常见的16点阵汉字库,做界面的美观性是比较差的——经常菜单做出来顶天立地的,虽然不影响使用,但是用户体验着实不好。

      我一般使用的是12点阵汉字库,在两行英文的16像素高度下,12点阵汉字库不但没有顶天立地,留下了美化的空间,而且文字看起来很秀气,做出来的产品显得高雅大方(仅限于黑白对比黑白啊,哈哈)

      手头的12点阵汉字库,是十几年前UCDOS年代珍藏的,现在在网络上也能搜到大把,质量上说,是相当不错,套用一句广告词:我们一直都用它! 不过最近做开源遥控器代码时,遇到海峡对岸的朋友需要繁体软件的时候,卡壳了。。。在网络上找了许久,没有找到美观好用的12点阵繁体字库,UCDOS年代的繁体也是16点阵的了。。。

      最终,决定自己动手,把12点阵繁体字库,从WINDOWS7里面偷出来。。。盖茨他老人家热衷慈善事业,对我等非盈利应用,应该不会有意见吧。。。

未命名.jpg 

      源码见附件,其中的release目录中已经有生成好的12点阵简繁体字库可用了。字库的检索方式,是传统的区位码方式:每个汉字占24个字节(16*12点阵),按照((区码-0XA1)*94+位码-0XA1)*24来定位汉字的点阵阵列。 之所以是16嘛。。。。自己动脑筋想想,字库的扫描顺序?我也卖个关子不说,随便挑一个汉字画出来就能解析明白,呵呵。

 

       整个偷字库的思路是比较简单的,首先设置好12点阵的字体,然后将文字绘制到窗体上,接着按照一定的取模规律从窗体上逐像素取得点阵数据,最后写入文件。完成全部汉字的枚举就更简单了,用一个双重循环,分别穷举区码和位码,就可以做到6000多个二级汉字的遍历了。

      由于我们一般都是用简体字内码来进行开发的,所以做繁体字库的时候,生成的字库需要按照简体字库的顺序进行排列,因此,要将简体字转换成UNICODE再转换成BIG5内码,才能绘制出简体字库顺序的繁体字。。。有点拗口,大家静下心分析可以想明白,其实不复杂。

      行窃的过程中,发现按照UNICODE转换法,会有1%左右的汉字无法转成对应的繁体字(显示为?),因此代码要稍加修饰,对此类汉字,沿用简体字库,聊胜于无~

       无标题.jpg 

     这是软件的工作界面,我按照上下简繁同步显示的方式来处理,同时生成简繁体汉字库,为了偷懒我没创建线程,工作时界面卡死,不必担心,详情请看源码了,使用VC++ 6.0编译,不过我是用的是最朴素的消息循环方式编程,所以可执行文件极小(不需要额外运行库哦)。

        最终我将字库用在了GALEE开源遥控器当中,效果不错,对于看惯了简体字的我们来说,看看繁体字觉得别有韵味,哈哈

image1.jpg 

文章评论7条评论)

登录后参与讨论

用户3989891 2022-2-18 15:10

大神,搜到你的博文,急需12点阵繁体字库,不知道大神是否能看到此留言,如果看到的话,能否发一份给我,万分感谢  [email]vlras@163.com[/email]

用户1264390 2015-11-14 13:44

怎么用啊!不会用

用户752156 2015-5-19 00:43

创意,谢意

用户1835234 2015-4-17 11:21

不错呀,好!

用户1588142 2015-1-6 20:58

谢谢 分享

用户1761730 2014-5-25 19:47

感谢楼主的分享

用户1761325 2014-5-23 16:58

正好需要这种软件,下载试试看!谢谢LZ的帮助!
相关推荐阅读
用户1376226 2013-12-13 13:36
工程师漫画
EDN的兄弟们很多都有评工程师吧,这篇漫画是我有感而画的,漫画漫画,自然以嘲讽为主,不过不针对任何菜鸟,爷爷都是从孙子过来的,只是这个社会,唉.... 感谢魔漫相机创作了这么多表情素材...
用户1376226 2013-03-16 22:11
供参考:用PPM信号控制DX4E高频头源码
去年曾经写了一段小代码,用PPM信号来控制DX4E高频头,现将源码发布,见附件,代码量很小,而且DX4E高频头通讯协议我早已公布,因此请大家尽量不要提问啦~ (开发环境是ICC AVR 7.2...
用户1376226 2013-03-15 16:26
[博客大赛] GALEE 开源遥控器编译环境搭建指南
      上篇文章发布了遥控器的源码,这个源码是在老外DEVIATION固件的基础上开发的,因此开发环境也是沿用了老外的开发环境。 和国内明目张胆大量使用KEIL盗版开发环境不同,老外对这方面比...
用户1376226 2013-03-13 15:29
[博客大赛]GALEE-DEVO7E 开源中文遥控器
        一晃很久没来了。最近发现了一个好东西,和大家分享一下,这就是:华科尔的DEVO 7E遥控器。       从咱们工程师的...
用户1376226 2013-01-15 11:47
自动下雨闭窗器——20年前的小学科技
    前几天看到EDN官博上贴出一个下雨闭窗器,一下子勾起了几十年前的回忆。。。在某震惊世界的红事件结束后的80年代,国内掀起崇拜科学的一阵狂潮,各类科技、科幻、科普书籍杂志遍地开花,其中就有针对中...
我要评论
7
21
关闭 站长推荐上一条 /2 下一条