minigui添加TTF字体支持

前言
本文主要内容如下:
1.minigui添加TTF字体
一、运行环境
芯片:TI385
sdk:TI385
软件环境:嵌入式linux,2.6.37armv7l
二、具体改动
1.关于整个工程目录列表如下:
>iphone-like-demo-1.0.0(这个暂时不明白有没有用到)
【minigui添加TTF字体支持】>toolslib(库文件夹)
-freetype-1.3.1(TTF字体库)
-jpeg-7(jpeg支持库)
-libmgi-2.0.4(mgi支持库)
-libminigui-3.0.12-linux(minigui库)
-libpng-1.2.37(png库)
-tslib(touch校准支持库)
-zlib-1.2.2(好像是解压缩支持库)
>visminigui(minigui主应用程序)
2.进入minigui库所在目录
1)make clean
2)make uninstall
3)configure

./configure --prefix=$PWD/install CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ LD=arm-none-linux-gnueabi-ld CFLAGS="-I/home/qdg/apps/picencdec/jpeg-6b/install/include -I$PWD/../libpng-1.2.37/install/include -I$PWD/../tslib/install/include -I$PWD/../zlib-1.2.2/install/include -I$PWD/../freetype-1.3.1/install/include -I$PWD/../freetype-1.3.1/install/include/freetype " --host=arm-linux --target=arm-linux --build=i386-linux --with-osname=linux --with-style=classic --with-targetname=fbcon --with-ttfsupport=ft1 --with-ft1-includes=$PWD/../freetype-1.3.1 /install/include/freetype --disable-vbfsupport --enable-jpgsupport --enable-pngsupport --enable-procs --enable-autoial --enable-tslibial --enable-splash=no --enable-pcxvfb=no --disable-screensaver
注意,需要根据实际情况作相应的配置,可以通过configure --help查看。
主要是路径要正确,作者configure没有配置正确,导致各种问题,并且TTF字体没有生效,直到最后configure正确才成功。
可以将configure的内容写入到autogen.sh文件中,运行autogen.sh,不用每次输入命令。
4)在mgcofig.h文件中添加TTF库的支持
/* Define if support TrueType font */
/* #undef _MGFONT_TTF */
#define _MGFONT_TTF 1
5)make
6)make install
会在install/lib目录下生成库文件。
3.进入visminigui主应用下
在minigui的init中添加TTF字体库支持和字体
InitVectorialFonts();
//fonts
//ISO8859-1
pWinCtrl->fontlist.font_gb2312_song_16 = CreateLogFont("ttf", "arial", "GB2312", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN,FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE,16,0);
pWinCtrl->fontlist.font_gb2312_song_32 = CreateLogFont("ttf", "arial", "GB2312", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN,FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE,32,0);
另外需要在destory中销毁
TermVectorialFonts();
使用字体
SelectFont(hdc, pWinCtrl->fontlist.font_gb2312_song_32);
4.在MiniGUI.cfg中修改
[truetypefonts]
font_number=3
name0=ttf-arial-rrncnn-0-0-ISO8859-1
fontfile0=/mnt/apps/dm8107_e700/minigui/res/font/arial.ttf
5.将库文件、主应用、MiniGUI.cfg放到TI385中对应的minigui路径对应的文件夹下
>minigui
-./lib/libttf.so.2(这个是TTF支持库freetype-1.3.1)
-./lib/libminigui_procs-3.0.so.12
-./MiniGUI.cfg
-./mginit
-./font/arial.ttf
然后启动可以看到TTF字体效果。
三、总结
minigui的资料非常少,走了很多弯路。最开始认为应用和库默认是支持TTF的,把TTF字体加进去后发现完全没有效果。接着在网上看到说是要在库中支持TTF字体,改mgconfig.h内容,结果改过后编译没有反应。加打印才发现关于TTF的部分没有编译,然后又看到有说要configure配置,如果不是网上提到,甚至都都不知道这个,而且对minigui不熟悉,花了很多时间在configure上面。最后同事帮忙才搞定configure,作者即使是现在,configure要怎么搞都不清楚。configure搞定就基本没别的问题了。
最终解决这个问题,主要是问人,在网上找资料,查原因。真是折腾了很久,另外也认清了现实,嵌入式需要学习的东西太多了,作者还有许多路要走。

    推荐阅读