[open source]点阵字体产生器发布

[open source]点阵字体产生器发布

 

转载时请注明出处:http://blog.csdn.net/absurd

 

N年以前写的一个点阵字体产生器,主要是给自己用的,花了一天时间就搞定了,后来没有时间整理,代码比较乱,不过还算比较稳定。后来放到网上去了,下载量还不小,常常有一些朋友向我索要源代码,最近又收几个网友的来信。干脆放到这里吧,不过代码有点乱。有兴趣的朋友可以到这里下载

 

ZTGen

=========================================================

 

ZTGen是什么

=========================================================

 

ZTGen是一个点阵字体产生工具,它可以把Windows系统中的字体,转换成点阵字

体的数据。输出的结果可以按照ANSI排序,也可以按照Unicode排序。

 

ZTGen的用途

=========================================================

常常会有这样的情况:

 

在开发嵌入式系统时,需要显示不同大小或字体的汉字。显然,对于嵌入式系统,

不太可能使用矢量字体,而点阵字体,不同大小的字体不能简单的缩放。

 

另外,对一个小系统,也不需要完整的字体,往往只要几十个,甚至几个就够了。

 

一般,我们采用的方法是,自己准备点阵字体的数据,在显示汉字时,把这些数据

写入显存就行。

 

这时又存在另外一个问题,由于是不完整的字库,不能简单的用汉字的内码去找到

对应的字体数据,如果逐个比较,又费时间。比较好的方法就是把字体数据排序,

查找时用二分查找,这样可以大大提高查找效率。

 

ZTGen就是为以上问题提供一个完整的解决方案:

 

首先,把你指定的汉字转换成你指定字体、大小的字体数据。

然后,把这些字体数据按ANSI或者Unicode排序。

最后,提供一组函数去查找和显示汉字,并带有VC/DOS/directfb的演示代码。

 

 

ZTGen如何使用

========================================================

使用很简单:

 

选择字体:点击"字体"按钮,在字体对话框里选择字体、大小、效果等。

准备汉字:把你要显示的汉字拷到左上角的编辑框内。

选择排序方式:按ANSI或者Unicode排序。

产生数据:点击"产生"按钮。

 

右上角是单个汉字的文本显示效果。如:

0100               11                

0100               11               

2108     11        11        11     

3ffc     111111111111111111111111   

2108     11        11        11     

2108     11        11        11     

2108     11        11        11     

2108     11        11        11     

2108     11        11        11     

3ff8     1111111111111111111111     

2108     11        11        11     

0100               11               

0100               11               

0100               11               

0100               11               

0100               11               

0000                   

 

左下角是字体数据。如:

Unicode排序:

{

       EX_FONT_CHAR_VAL("")

       EX_FONT_UNICODE_VAL(0x4e2d)

       {0x01, 0x00, 0x01, 0x00, 0x21, 0x08, 0x3f, 0xfc, 0x21, 0x08,

0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x3f, 0xf8, 0x21, 0x08,

0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00}

}

ANSI排序:

{

       EX_FONT_CHAR_VAL("")

       EX_FONT_ANSI_VAL(0xd6d0)

       {0x01, 0x00, 0x01, 0x00, 0x21, 0x08, 0x3f, 0xfc, 0x21, 0x08,

0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x3f, 0xf8, 0x21, 0x08,

0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00}

}

 

最后就是按这些数据与显示函数集成起来。

 

ZTGen工作原理

=======================================================

因为Windows显示汉字时,对程序员来说,就是把汉字的写到Device Context中。

我们只从Device Context中把这个汉字对应的像素的值读出就行了。

 

报告错误

======================================================

如果你发现有什么错误,请麻烦您告诉我一下:xianjimli@hotmail.com

 

屏幕截图:

 

 fontgenfontdemo
原文地址:https://www.cnblogs.com/zhangyunlin/p/6167846.html