海思方案的OSD叠加是通过bmp位图数据来实现,如何将asc码或者中文字符动态生成bmp数据呢?
1、工具:SDL_ttf
2、SDL_ttf简介
SDL本身没有显示文字功能,它需要用扩展库SDL_ttf来显示文字。ttf是True Type Font的缩写,ttf是Windows下的缺省字体,它有美观,放大缩小不变形的优点,因此广泛应用很多场合。freeType是一个跨平台开源项目, 它可以在利用ttf字体输出到屏幕上。一般的linux发行版本都带了这个库(libfreetype.so),Windows下也有相应的移植版本。
SDL_ttf封装freetype的库函数,提供一些简化的扩展接口提供SDL开发者使用。
使用ttf库的第一件事要从Windows的字库下拷贝出一个字库出来,最好是中文字体,这样可以同时支持英文和中文显示。它一般在c:\windows \fonts 目录下面。比如simsun.ttf 就是仿宋体的字库,将这个文件拷贝到你的项目目录下。或者一个指定目录。
3、交叉编译移植
依赖关系:SDL_ttf依赖于freetype与SDL两个库,交叉编译SDL_ttf之前先交叉编译freetype与SDL
3.0 、下载
freetype-2.5.5:
SDL-1.2.15:
SDL_ttf-2.0.11:
3.1、freetype交叉编译
# ./configure --prefix=/opt/arm/freetype --enable-shared --host=arm-hisiv100nptl-linux --without-png
# make
# make install
3.2、SDL交叉编译
# ./configure --prefix=/opt/arm/SDL --host=arm-hisiv100nptl-linux
# make
# make install
3.3、SDl_ttf交叉编译
# ./configure --prefix=/opt/arm/SDL_ttf --host=arm-hisiv100nptl-linux --with-freetype-prefix=/opt/arm/freetype --with-sdl-prefix=/opt/arm/SDL
# make
# make install
4、API应用
函数接口
TTF_Init
TTF_OpenFont
TTF_SetFontStyle
TTF_RenderUTF8_Solid
SDL_ConvertSurface
SDL_FreeSurface
TTF_CloseFont
TTF_Quit
编译规则:
$(CC) -I ./SDL_ttf/include/SDL -I ./SDL/include/SDL -I ./freetype/include/freetype2/ -pthread -lm -o ttf_test ./src/ttf_test.c ./SDL_ttf/lib/libSDL_ttf.a ./freetype/lib/libfreetype.a ./SDL/lib/libSDL.a
附录
轻量级ttf字库下载地址(方正兰亭黑)