国人OpenGL下作开发,一个或许是必须要做的事情就是显示汉字。如果你的产品只是活动在win32平台下,wgl开头的windows辅助函数会帮你的大忙。

如果希望能够摆脱对win32 api的依赖。FreeType可能是你最佳的选择,除非你不在乎不用TTF。中文点阵字体在小字号的时候有得天独厚的优势,但是大字体的时候毫无疑问是TrueType的天下。

我对这个问题其实关注已久,FreeType每次都是拿起又放下,也试过自己从TreeType下提取点阵字体,以求能够解决这个问题。哈~

但是前几天我不经意找到了VTK这个暴强的三维可视化库,这个问题又回到了我的眼前。

VTK的文字引擎后台用的是FTGL,FTGL的后端是FreeType2。一番实践之后,我知道这个库还是对中文支持的不够好。事实上,如果使用 unicode(utf16/ucs2)的编码,FTGL已经可以很好的显示中文。不过前提是使用wchar_t。很多时候我们还是使用传统的char, 还有一个原因就是中文字体所带的英文显示效果很难看。这个如果你在linux的环境下作过美化一定印象深刻。

基于以上两点,我动手对ftgl进行修改,增加gbk转换unicode的工作,并在真正render之前,选择合适的字体分别渲染中文和英文。还 作了一件事,就是把vtk所带的freetype2和ftgl大大的升级了一把。然后修改了vtk的OpenGLFontCache和 OpenGLTextMapper类,初步的效果如下:(使用了simsun.ttc和Tahoma.ttf)效果的确不错!

就是现在的代码patch的不规范,有空再整理吧。

ps:borland的C++ Complier对C++的支持其实满不错。但就是很多opensource的开发者,在windows下的port一般都是使用vc的编译器,自己手动编译到borland下来很复杂。

vtk作为一个跨平台的开发工具。使用了自己的make组织工具--CMaker,类似于jam的东西。我发现这个东西的确不错。以后有空多多学习。

FreeType:http://www.freetype.org

FTGL: http://homepages.paradise.net.nz/henryj/code/

VTK的网站:http://www.vtk.org 

cmake的网站: http://www.cmake.org 

我这里上去暴慢,动不动就10061:Socket Connection Error 拒绝访问。郁闷!

BTW: 本文提到的东西都是open source的,除了那两个字体 -_-|||。

 

 

本文来源:http://borland.mblogger.cn/cker/posts/7848.aspx