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

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

 

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

 

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

 

ZTGen字体

=========================================================spa

 

ZTGen是什么.net

=========================================================code

 

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

体的数据。输出的结果能够按照ANSI排序,也能够按照Unicode排序。xml

 

ZTGen的用途blog

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

经常会有这样的状况:

 

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

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

 

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

 

通常,咱们采用的方法是,本身准备点阵字体的数据,在显示汉字时,把这些数据

写入显存就行。

 

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

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

查找时用二分查找,这样能够大大提升查找效率。

 

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

 

屏幕截图:

 

  fontgen fontdemo